个人在理解递归函数时,引入程序等待的想法。会发现很好理解了。
- 举个例子,我们求[1,2,3,4,5,6,7,8,9,10]这样一个列表的值。通过递归函数来实现。
|
a = [1,2,3,4,5,6,7,8,9,10] def func(lista): if len(lista)==1: return lista[0] else: sum = lista[0]+func(lista[1:]) return sum f = func(a) print(f)
第一次调用func函数时,把a传入func。判断lista的长度不等于0所有执行else里面的语句块。 也就是a[0] + [2,3,4,5,6,7,8,9,10] 此时a[0]+等待程序语句执行结束,也就是1+开始等待语句结束。 因为lista长度不等于1,继续执行 [2,3,4,5,6,7,8,9,10] 第二次调用函数func,结果:a[0]+[3,4,5,6,7,8,9,10]。也就是2+开始等待语句结束。 ... 最后一次长度==1.语句结束,但是它上一层的语句还在等待执行。所以把最后一个元素10返回给它上一层。9+10算出结果,继续返回给上一层。直到最初位置1+,最后程序结束。
画个图会更好直观啦 |