使用记忆化方式求fib
自上向下
def fib(self,N:int)->int:
cathe={}
def recur_fib(N):
if N in cathe:
return cathe[N]
if N < 2:
res = N
else:
res=recur_fib(N-1)+recur_fib(N-2)
cathe[N] = res
return res
return recur_fib(N)
自下向上
class Solution:
def fib(self, N: int) -> int:
if N <= 1:
return N
return self.memoize(N)
def memoize(self, N: int) -> {}:
cache = {0: 0, 1: 1}
# Since range is exclusive and we want to include N, we need to put N+1.
for i in range(2, N+1):
cache[i] = cache[i-1] + cache[i-2]
return cache[N]