【算法】斐波那契算法

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)

leetcode

做了缓存之后提升效果还是挺明显的

循环法

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))

posted @ 2020-08-09 15:09  如海  阅读(184)  评论(0编辑  收藏  举报