斐波那契数 ,问第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))

posted @ 2019-06-12 15:26  kate8Y  阅读(142)  评论(0)    收藏  举报