递归
超过最大递归深读限制会报错。
只要写递归函数,必须要有结束条件。
返回值
不要只看到return就认为已经返回了,要看返回操作是在递归第几层的时候发生的。然后返回给了谁。
如果不是返回最外层的函数,调用者接收不到。
需要在分析,看如何把结果返回回来。
作业
斐波那契,问第n个斐波那契数是多少?
def fib(n): if n ==1 or n ==2: return 1 else: return fib(n-1) + fib(n-2) print(fib(9))
注意,在写递归是应避免调用双递归。因为递归调用的越多,会使计算量越大。因为计算机会做很多重复功浪费时间。
def fib(n): if n ==2: return 1,1 else: a,b = fib(n-1) return b,a+b print(fib(9))
阶乘的实现
def func(n): if n == 0 or n == 1: return 1 else: return n*func(n-1) print(func(5))