Como calular um número fatory em Bash puro - (例如:5!)

Como calular um número fatory em Bash puro - (例如:5!)

尝试翻译:

纯粹在 Bash/shell 脚本中编写阶乘的基本、优雅且快速的方法是什么? (代码)请提出建议。 (代码)

除了基本/优雅/快速之外,还可以使用 BASH(Shell 脚本)中的计算方法进行计算。

Ex.: 5! = 5*4*3*2*1 = 120

要点:

num=5
echo $(($(eval echo {$num..1} | sed 's/ /*/g')))

答案1

这无需评估即可工作:

prod=$(echo {1..5}* 1); echo $((prod))

这是一个 bash 函数,它带有一个参数,这在上面的解决方案中是不可能的:

fak () 
{ 
    echo $(($(seq -s'*' 1 $1)))
}

正如 cas 在评论中指出的那样,Shell 仅限于 64 位,为了获得更大的结果,bc 值得一试,但这不是 puro,不是吗?嗯 - 这个参数也适用于 seq;这是一个外部程序。

echo {1..30}* 1 | bc

相关内容