递归中Return实例分析
cnblogs 2024-10-08 13:45:00 阅读 50
函数递归
return:返回特定的退出状态码,在函数结束时
<code>#! /bin/bash
# using recursion
# 计算阶乘,formula:x!=x*(x-1)!, 使用递归函数得到(x-1)!
function factorial {
# 递归边界,根据1的阶乘是1
if [ $1 -eq 1 ]; then
echo 1
else
local temp=$[ $1 -1 ]
# 接收函数的输出,并将返回值传递给result
local result=$(factorial $temp)
echo $[ $result * $1 ]
fi
}
read -p "Enter value: " valuezi
# result与自成体系的递归函数不同
result=$(factorial $value)
echo "The factorial of $value is : $result"
理解优化
那是因为上一层执行递归之后的代码会调用下一层返回的值
亦或者说:最底层的实现(return1)作为最外层的调用(return4),如此循环往复
例如,计算 factorial 4 的过程如下:
- <li>
factorial 3
调用factorial 2
,返回2 * factorial 2
。factorial 2
调用factorial 1
,返回1 * factorial 1
。factorial 1
返回1
。逐层返回时:
factorial 2
返回2 * 1 = 2
。factorial 3
返回3 * 2 = 6
。factorial 4
返回4 * 6 = 24
。当递归停止后,函数内部的result返回的是之后的阶乘,因为每一层递归都会将当前的 result 乘以当前的 $1,直到最外层调用。
li>
<code>factorial 4 调用 factorial 3
,返回 3 * factorial 3
。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。