我想在 bash 中做一个返回数字阶乘的函数
这是当前代码不起作用的代码,任何人都可以告诉我哪里出了问题以及如何更正它吗?我刚开始学习 bash,还不是很了解。
#!/bash/bin
factorial()
{
let n=$1
if (( "$n" <= "1" ))
then return 1
else
factorial n-1
return $n*$?
fi
return 0
}
factorial 5
echo "factorial 5 = $?"
最佳答案
有几种语法和一个很明显的逻辑(返回0)
工作版本如下:
#!/bin/bash
factorial()
{
if (( $1 <= 1 )); then
echo 1
else
last=$(factorial $(( $1 - 1 )))
echo $(( $1 * last ))
fi
}
factorial 5
你错过了:
返回错误(应该使用
echo
)shbang 行(是/bin/bash 不是/bash/bin)
不能在
(( ))
或$(( ))
(或let
之外进行算术运算,但是(( ))
是首选)
关于bash - bash 中的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9682524/