假設,一級臺階,有f(1)種方法,二級臺階有f(2)種方法,以此類推,跳到n級臺階有f(n)種方法。
能夠看出,f(1) = 1,f(2) = 2。那麼,n級臺階就有兩種狀況。python
跳1級,接下來是f(n - 1)code
跳2級,接下來是f(n - 2)class
總數就是f(n) = f(n - 1) + f(n - 2)方法
def memo(func): cache = {} def inner(*args, **kwargs): if args not in cache: cache[args] = func(*args, **kwargs) return cache[args] return inner @memo def fbi(n): if n <= 2: return 1 return fbi(n - 1) + fbi(n - 2) print(fbi(100))
def memo(func): cache = {} def inner(*args, **kwargs): if args not in cache: cache[args] = func(*args, **kwargs) return cache[args] return inner @memo def fbi(n): if n <= 2: return 1 return 2 * fbi(n - 1) print(fbi(100))