台阶问题
台阶问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
斐波那契数列
0, 1, 1, 2, 3, 5, 8, 13......
递归算法:
def fib_recur0(n):
if 0 <= n <= 1:
return n
else:
return fib_recur0(n-2) + fib_recur0(n-1)
递归算法 - pythonic(不考虑 n 等于 0 的情况):
def fib_recur1(n):
return n if 0<= n <= 1 else fib_recur2(n-1) + fib_recur2(n-2)
递归算法改进 - 使用备忘录缓存
def fib_recur2(n):
global cache
cache = {0:0, 1:1}
if n not in cache.keys():
cache[n] = fib_recur2(n-2) + fib_recur2(n-1)
return cache[n]
递归算法改进 - 使用备忘录缓存 - 使用装饰器
def memo1(func):
cache = {}
def wrapper(arg):