这个特定的 while 循环承认它只适用于 20 号。在那之后,它开始给出错误的答案,但我不知道为什么。
#!/bin/bash
n=$1
[ "$n" == "" ] && echo Please give a number and try again && exit
factorial=1 ; j=1
while [ $j -le $n ]
do
factorial=$(( $factorial * $j ))
j=$(( $j + 1 ))
done
echo The factorial of $n, "$n"'!' = $factorial
exit 0
Run Code Online (Sandbox Code Playgroud)
如果你给出 21 作为参数,你会得到:-4249290049419214848。这可能是一个bash问题吗?我尝试进行下面的阶乘计算,但得到了同样糟糕的答案。答案应该是:51090942171709440000
echo $(( 2432902008176640000 * 21 ))
Run Code Online (Sandbox Code Playgroud)