关于python递归的一个简单应用

实现一个功能:计算一个数字的阶乘

先上代码: 

"=====计算阶乘====="

def factorial(n):
    if n == 1:
        return 1   
    else:
        return n * factorial(n - 1)


print(factorial(5))

可以看到我计算的是 5 的阶乘 结果为 120 

代码虽然简单 但对于刚刚接触的小伙伴 有个点需要注意

在这里 当循环到 n=1 的时候 

直接进入到 if语句 然后return 1

此时 需要注意 函数 factorial 并不是直接将1返回 跳出函数

而是 factorial(1) 此时为1 然 还没有结束

接着 进入到函数的 else 部分

本来按照 if else的规则 执行了 if语句就应该不会执行else了

但这里 不一样

因为这是“函数” 递归

代码就会跳到 else 语句

这时 若认为 n=1  return n*factorial(n - 1) 直接就返回了 0 的话 那就错了

 因为在执行到 if  语句的时候 factorial()函数的值就已经为1了

所以此时这个语句应该等价为 n *factorail(1)

所以最后 return 返回 120 * 1 结果就为 120

附上一张函数递归的流程图 

以上内容 仅供参考 如有不当之处 欢迎指出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值