鱼C论坛

 找回密码
 立即注册
查看: 1537|回复: 5

[已解决]关于递归算法的理解

[复制链接]
发表于 2022-9-19 21:37:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 竹逸 于 2022-9-19 21:45 编辑

用递归算阶乘:

5! == 5*4*3*2*1

4! == 4*3*2*1

3! == 3*2*1

2! == 2*1

1! == 1

可以看出 4! 是 5! 中的一部分,所以 5! 可以写成 5*4!,那么 4! 也可以写成 4*3!,以此类推出公式:n*f(n-1)。

当n==1时,则return 1,即向内递进到最底层后,得到一个结果(f(n)的返回值 1),然后在向外一层一层的return,把内一层的计算结果返回给外一层,原路逐层返回。

也就是说当 return 结果为1时,即f(1) == 1时,n为2,把结果1返回给n为2的那层,即f(1)*2,而1*2的结果是n为3那层,即f(2)*3,依次得出为1*2*3*4*5,最后再把结果返回。

我这么理解对吗?
最佳答案
2022-9-19 21:44:55
对的,另外你可以调试一下程序,一步一步执行代码,亲自体验一下这个一层一层向下调用,一层一层向上返回,这样会对递归更加印象深刻
提示,层数不要太深,不然你跟着跟着就不知道跟到哪一层了,^_^
先从1层开始,然后试试2层,3层,这样一层一层的加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-19 21:44:55 | 显示全部楼层    本楼为最佳答案   
对的,另外你可以调试一下程序,一步一步执行代码,亲自体验一下这个一层一层向下调用,一层一层向上返回,这样会对递归更加印象深刻
提示,层数不要太深,不然你跟着跟着就不知道跟到哪一层了,^_^
先从1层开始,然后试试2层,3层,这样一层一层的加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-19 21:46:21 | 显示全部楼层
你好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-19 22:01:53 | 显示全部楼层
人造人 发表于 2022-9-19 21:44
对的,另外你可以调试一下程序,一步一步执行代码,亲自体验一下这个一层一层向下调用,一层一层向上返回, ...

我发现自己有个很大的毛病,就是喜欢用脑子思考程序的过程,却不会去一步步调式程序,我知道这样非常的不好,就是懒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-19 23:14:35 From FishC Mobile | 显示全部楼层
ikun小吴 发表于 2022-9-19 21:46
你好

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

使用道具 举报

 楼主| 发表于 2022-9-19 23:15:32 From FishC Mobile | 显示全部楼层
汉诺塔的问题,我脑子不够用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 04:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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