如何理解递归(图解)

一 概念

递归,就是在运行的过程中调用自己。。

百度百科定义非常废话,有没有更直观的解释呢?

二 递归

相信大家应该都有一个递归的概念,但是不知道递归具体是怎么运行的,先来看一段代码,斐波那契数列(python版):


图1 代码及执行结果

解释一下代码:如果num1 跟num2的和大于300,则结束递归,否则一直递归,else中递归传入的参数也很好理解,就是斐波那契数列需要相加的两个数,因为斐波那契数列是这样的1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610 ..........(只看三个数的话,第三个数值为前两个数的和)那么这个递归是如何执行的呢?画图说明:


图2 递归执行图解

从图上我们可以看到,每次递归相当于重新走一次函数,而递归的返回,并不是一次性直接返的,而是当递归的最后一次执行符合返回条件之后,将结果返回到上次调用的地方,根据图上的来说,是从 4 返回到了3 ,从3返回到2,一直返回到 调用的 fibonacci(1,1)


从 图 1 的执行结果也可以看出其具体的返回顺序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容