普通递归版
def fib(n):
return fib(n-1)+fib(n-2) if n >= 2 else n
迭代版
def fib(n):
if n < 2:
return n
a, b = 0, 1
for _ in range(n-1):
a, b = b, a+b
return b
动态规划版
memo = {0:0, 1:1}
def fib(n):
if n not in memo:
memo[n] = fib(n-1) + fib(n-2)
return memo[n]