鱼C论坛

 找回密码
 立即注册
查看: 2074|回复: 0

[技术交流] Python FAQ 009 递归(一)

[复制链接]
发表于 2020-3-4 09:59:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一个账号 于 2020-3-4 11:37 编辑

Python FAQ 009 递归(一)


问题

这个递归是什么意思:
def factorial(num=1):
    if num == 1:
        return 1
    else:
        return num * factorial(num-1)

factorial(5)

解答

递归就是一直调用自己,return 1 就是自己调用自己的一个终结点。

如果函数没有一个终结点,那就变成了从前有座山,山里有座庙,庙里有个老和尚正给小和尚讲故事,故事讲的是,从前有座山,山里有座庙,庙里有个老和尚正给小和尚讲故事......

最后,程序崩溃了。

factorial(5) 调用过程:

factorial(5) -> factorial(4) -> factorial(3) -> factorial(2) -> factorial(1)

factorial(5) 返回过程:

factorial(1) 返回 1,factorial(2) 返回 2 * factorial(1) 的结果也就是 2,factorial(3) 返回 3 * 2,factorial(4) 返回 4 *  6,factorial(5) 返回 5 * 24。

最终的结果就是 120。

递归.jpg

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 08:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表