请教一下,为啥结果和过程感觉不搭的感觉呢?

递归是魔鬼吗 2018-11-13 11:38:56

前前前前前前前前前前前前 5
前前前前前前前前前前前前 4
前前前前前前前前前前前前 3
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 1 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
前前前前前前前前前前前前 2
后后后后后后后后后后后 2 1
前前前前前前前前前前前前 3
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 1 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 3
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 1 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 3 2
前前前前前前前前前前前前 4
前前前前前前前前前前前前 3
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 1 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
前前前前前前前前前前前前 2
后后后后后后后后后后后 2 1
前前前前前前前前前前前前 3
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 1 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 3
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
后后后后后后后后后后后 1 1
前前前前前前前前前前前前 2
前前前前前前前前前前前前 1
5

Process finished with exit code 0


就是一个斐波那契,传一个整数N,得出第N个斐波那契是多少.

这个执行顺序好奇怪啊,5,1,3,1,3,1,6,1,2,1,4,1,3,1,3,1,6,1,2.栈中是否生成了40个fbn()的代码块呢?

他这个执行循序好奇怪啊,而且最后n变成1和1了, 1+1返回main应该是2才对,怎么返回的是5呢
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
瑞卡哥哥 2019-10-22
  • 打赏
  • 举报
回复
2楼正确 表达式重复调用引起多个递归 所以执行结果不是你想要的结果
qybao 2019-02-05
  • 打赏
  • 举报
回复
你再好好分析一下递归

你可以把
fmt.Println((a:"后后。。。。", fbn(n-1), fbn(n-2))
这句改成不传参数 fbn(n-1), fbn(n-2) 看看有什么不同
提示:这句打印的 fbn(n-1), fbn(n-2) 也发生了递归,所以打印信息不像你想象的那样,你好好捋捋看
递归是魔鬼吗 2018-11-13
  • 打赏
  • 举报
回复
函数调用37次,然后执行了9次else
54321还能理解 每次都减1了, 2 1 2的变化是什么鬼..

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧