from functools import lru_cache
class Solution:
@lru_cache(maxsize=None)
def fib(self, n: int) -> int:
if n == 0:
return 0
if n == 1:
return 1
return self.fib(n - 1) + self.fib(n - 2)
做了缓存之后提升效果还是挺明显的
循环法
class Solution(object):
def fib(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 2:
return n
else:
a = 1
b = 2
temp = 0
for i in range(3, n + 1):
temp = a + b
a = b
b = temp
return temp
s = Solution()
print(s.fib(5))