斐波那契数 ,问第n个斐波那契数是多少
递归特点:
超过最大递归限制的报错
只要写递归函数,必须要有结束条件
返回值:
不要只看到return就认为已经返回了,要看返回操作是在递归到第几层的时候
发生的,然后返回给了谁。
如果不是返回给最外层函数,调用着就接收不到
需要再分析,看如何把结果返回回来
斐波那契数 ,问第n个斐波那契数是多少
# 1,1,2,3,5,8
用递归实现斐波那契数
fib(6) = fib(5) + fib(4)
fib(5) = fib(4) + fib(3)
fib(4) = fib(3) + fib(2)
fib(3) = fib(2) + fib(1)
fib(2) = fib(1)
fib(1) = fib(1)
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1) + fib(n-2) #不要使用双递归
fib(6)
=========================================
def fib(n):
if n == 2:
return 1,1
else:
a,b = fib(n-1)
return b,a+b
print(fib(6))
=========================================
def fib(n,l = [0]):
l[0] += 1
if n == 1 or n == 2:
l[0] -= 1
return 1,1
else:
a,b = fib(n-1)
l[0] -= 1
if l[0] == 0:
return a+b
return b,a+b
print(fib(6))

浙公网安备 33010602011771号