gpt4 book ai didi

shell - 为什么我的 bash 函数返回错误的值?

转载 作者:行者123 更新时间:2023-12-03 03:27:37 24 4
gpt4 key购买 nike

fact() 
{
if [ $1 -eq 1 ]
then
return 1
else
y=`expr $1 - 1`
fact $y
b=$(($1 * $?))
return $b
fi
}
echo "enter"
read n
fact $n
echo "$?"

这是一个求数字阶乘的程序。输出在 5 以内都是正确的。6 的输出为 208,但正确答案为 720。是什么导致了此错误?

最佳答案

函数返回值最多只能达到 255:

a()
{
return 255
}

a
echo $?

b()
{
return 256
}

b
echo $?

产品:

$ bash x.sh
255
0

return 类似于 exit 并且 exit 只能接受最大 255 的值 ( http://www.unix.org/whitepapers/shdiffs.html )。

一种替代方法是切换到迭代建议,如另一个答案中所述。或者,您可以使用 echo 并以这种方式捕获递归输出:

#!/bin/bash

fact()
{
if [ $1 -eq 1 ]
then
echo 1
else
y=$(expr $1 - 1)
f=$(fact $y)
b=$(($1 * $f))
echo $b
fi
}
echo "enter"
read n
fact $n

关于shell - 为什么我的 bash 函数返回错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3394930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com