如何理解递归(图解)

2019-01-06  本文已影响0人  Zeaone

一 概念

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

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

二 递归

相信大家应该都有一个递归的概念,但是不知道递归具体是怎么运行的,先来看一段代码,斐波那契数列(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 的执行结果也可以看出其具体的返回顺序

上一篇下一篇

猜你喜欢

热点阅读