用递归并缓存中间结果即可
class Solution:
def fib_cache(self, N, cache):
if N < 2:
return N
elif N in cache:
return cache[N]
else:
cache[N] = self.fib_cache(N - 1, cache) + self.fib_cache(N - 2, cache)
return cache[N]
def fib(self, N: int) -> int:
cache = {}
return self.fib_cache(N, cache)