我正在解決這個「遞歸中的因子函數(=獲取n!參數n)」問題。這是我想出的bash shell腳本代碼。我給一個整數作爲參數:Shell腳本的返回值在(正常與調試模式)執行中不同
#!/bin/bash
# Script name: RecFact.sh
#
# recursive factorial
factorial(){
if [ $1 -eq 0 ]; then
return 1
fi
pro=`expr $pro \* $1`
factorial `expr $1 - 1`
return $pro
}
pro=1
factorial $1
echo "$?"
的問題是,當我使用1〜5的終端,因爲它需要的一個參數上運行它(例如./RecFact.sh 5),則返回的值(像5個120)是正確的。
但是,當參數高於5時,它會全部錯誤(例如,對於6,而不是720)。
真奇怪的是,如果我在調試模式下運行它(例如sh -x ./RecFact.sh 6),調試器會爲每個輸入值提供正確的值(如6)。
可能是什麼原因?
在腳本的開頭添加'set -x'並以通常的方式運行腳本以查看腳本的調試運行是一種很好的做法。 – Inian