小编wha*_*ife的帖子

while 循环阶乘最多只能工作 20?

这个特定的 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)

bash shell-script variable

2
推荐指数
1
解决办法
853
查看次数

标签 统计

bash ×1

shell-script ×1

variable ×1