其他
如何向一个4岁的孩子解释递归
美版知乎Quora上有一个有趣的问题,如何向一个四岁的孩子解释递归。
一、一个比较高赞的回答
洋葱是内部带有洋葱的洋葱皮。
二、一些不太恰当却形象的图片解释
三、有个比较有意思的回答,解释得比较好
电影院里,有人问你你坐在第几排,你懒得数,于是你问坐在你前一排的人他坐在第几排,这样在他回答的排数上加1你就可以知道你坐在第几排了。坐在你前一排的人也懒得数,于是就继续去问坐在他前一排的人相同的问题,这样一直下去直到问到坐在第一排的老哥,第一排的老哥当然会告诉你他坐在第一排。于是这个消息会从第一排开始一排一排再传回到你这里,当然每个接受到这个消息的人会在这个结果上加1再把结果传给后排的人,于是你就可以得到你在第几排啦~~
例子解析:
1.坐在第几排的问题,可以转化问题为:在我前面有多少人+1;
2.这个比喻形象地说明了递归对于堆栈的调用,一层层压入堆栈(从提问者的位置到第1排的位置)以及弹出堆栈(从第1排到算出提问者排数)的过程。
下面是pipi做的一个小视频,模拟了这个过程:
万水千山总是情,点个 “在看” 行不行~~