shell脚本利用计算n的阶乘_shell-递归函数(计算阶乘)

定义

shell函数的递归函数调用,就是把函数本身作为一个参数来调用。

函数既是调用者又是被调用者,每调用一层就进入新的一层。

例如:

#!/bin/bash

func ()

{

read i #标准输入读取数据i

func "$i" #调用自身

echo "$i" #输出$i

}

func #调用函数

事实上上面的代码逻辑上是有问题的,函数func里面调用自身的话,在他调用的这个func里面又有一个func的调用,func的调用里面又有一个调用......和玄幻小说类似,世界之上有小世界,进入小世界后又有三千大世界......这样就陷入了一个死循环(是不是很像一个小品 (•‾̑⌣‾̑•)✧˖°)

222112bc4b1f177417a177aa465b1572.gif

为了使函数到达目的后就退出,就得想循环一样,给定一个终止条件。条件满足时,不再递归调用,逐层返回,直至最外层调用。

举个简单的例子(计算阶乘):

一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

n!=1×2×3×...×(n-1)×n或者是0!=1,n!=(n-1)!×n

#!/bin/bash

echo "请输入"

read n

echo

func ()

{

local i="$1"

if [ "$i" -eq 0 ]; then

result=1

else

let "m=i-1"

func "$m"

let "result=$i * $?"

fi

return $result

}

func "$n"

echo "$n的阶乘为:$?"

计算结果

707d9d99fde940b44142f952e70acf58.png

验算一下:

3!=1*2*3=6

OK

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值