我试图创建一个素数分解函数(递归),我的问题是while循环在调用函数本身后结束。
代码:
primeFactors(){
if isPrime $1; then
echo "$1"
else
i=2
sqrtnum=`echo "sqrt($1)"|bc`
while [ $i -lt $sqrtnum ]
do
echo "I: $i sqr: $sqrtnum"
j=$(($1%i))
if isPrime $i && [ $j -eq 0 ]
then
echo "$i"
num=$(($1/$i))
primeFactors $num
fi
let i++
done
fi
}
输出就是这个
I: 2 sqr: 10
2
I: 2 sqr: 7
2
I: 2 sqr: 5
I: 3 sqr 5
I: 4 sqr 5
答案 0 :(得分:3)
您的变量是全球性的。
稍后的函数调用会覆盖先前的分配。
您需要制作变量local
。
将set -x
添加到脚本顶部以查看实际运行的内容。