初学编程对递归思想很难理解,求前辈指导一下

2020-01-29 16:46:58 +08:00
 w2bgopher

刷题的时候经常遇到需要递归的思想,但是我看答案的递归无法想象出它的结果是什么形成的,感觉十分的抽象,尤其是对于一些树,图的遍历已经其他需要递归完成的操作。

11261 次点击
所在节点    程序员
84 条回复
monstervivi
2020-01-29 18:25:13 +08:00
看一下盗梦空间然后总结一下就知道了。
vance123
2020-01-29 18:28:22 +08:00
Justin13
2020-01-29 18:31:18 +08:00
把递归看做循环,退出条件类比迭代条件
wssy
2020-01-29 18:39:22 +08:00
个人认为递归是分治思想的体现。
系统性学习下算法理解会深入些,我以前刚接触编程时也是一脸茫然,多解决些题目,看些书,就慢慢理解一点了
hakono
2020-01-29 18:49:48 +08:00
或者我觉得可以考虑把递归的学习适当延后
递归虽然写好了很优雅,但是一切的递归都是能等效翻译为循环的。也就是说,实在吃力可以先用循环顶着呗。等你编程经验上来了自然在应用中会逐渐。产生递归的思想

(顺便,在团队中不太想看到别人的代码里出现太多递归
1a0ma0
2020-01-29 19:18:55 +08:00
写点汇编试试?其实就是寄存器保存信息,然后跳转位置。可以看看《计算机组成要素》这本书,跟着这本书把上项目都都实现了。
kokodayo
2020-01-29 19:24:59 +08:00
从前有座山,山里有座庙……
Cbdy
2020-01-29 19:36:47 +08:00
可以用栈来理解
lscho
2020-01-29 19:39:16 +08:00
递归就是,我提醒自己明天提醒自己,直到某天结束。。。这就是递归,“提醒”就是函数,“明天提醒”就是在函数执行中再次调用当前函数,“某天结束”就是退出条件。
wensonsmith
2020-01-29 19:42:47 +08:00
每次我都会想这个栗子:

周末你带着女朋友去电影院看电影,女朋友问你,咱们现在坐在第几排啊?电影院里面太黑了,看不清,没法数,现在你怎么办?

别忘了你是程序员,这个可难不倒你,递归就开始排上用场了。于是你就问前面一排的人他是第几排,你想只要在他的数字上加一,就知道自己在哪一排了。但是,前面的人也看不清啊,所以他也问他前面的人。就这样一排一排往前问,直到问到第一排的人,说我在第一排,然后再这样一排一排再把数字传回来。直到你前面的人告诉你他在哪一排,于是你就知道答案了。

来自: https://www.showdoc.cc/476806889376927?page_id=2791994496480277
janxin
2020-01-29 19:43:04 +08:00
其实就是数学递归的表现
laravel
2020-01-29 19:43:23 +08:00
结合栈来理解啊
ayase252
2020-01-29 19:44:44 +08:00
把一个大问题分解成若干个相同的小问题。
orzorzorzorz
2020-01-29 19:52:08 +08:00
假设只有一层的调用自身,你就想着到递归的点,程序会停下来,先重新执行自身,然后等执行完了,返回当前的值,然后继续上个层次的程序就得了。多层的递归就是到条件满足了,然后一层层跳回到第一层。
1runningbird
2020-01-29 20:00:43 +08:00
从前有座山山里有个庙,庙里有个老和尚给小和尚讲故事,讲的故事是:从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的故事是....
Shiyq
2020-01-29 20:04:58 +08:00
就是我用我自己啊
sadhen
2020-01-29 20:11:28 +08:00
前段时间给我的侄女买了一个木制的汉诺塔玩具,递归应该从娃娃开始学起
aguesuka
2020-01-29 20:19:35 +08:00
《实分析》归纳法,有明确定义
symeonchen
2020-01-29 20:58:50 +08:00
想象觉得困难可以通过画图来帮助理解,或者写公式也可以,都有帮助。
另外,没看错的话,头像是「黒崎レイナ」吧,v 站对头像的选择其实有一些简单的约束,可阅读 https://www.v2ex.com/t/62637
pangleon
2020-01-29 21:19:35 +08:00
去做 LEETCODE 反转链表的递归做法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/640834

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX