# encoding:utf-8
def fib(n):
"""迭代法
>>> fib(8)
13
"""
prev, curr = 1, 0
for _ in range(n - 1):
prev, curr = curr, prev + curr
return curr
def memo(fib):
"""缓存法"""
cache = {}
def memo_cache(n):
if n not in cache:
cache[n] = fib(n)
return cache[n]
return memo_cache
@memo
def rec_fib(n):
"""递归法
>>> rec_fib(8)
13"""
if n == 1:
return 0
if n == 2:
return 1
else:
return rec_fib(n-2) + rec_fib(n-1)
if __name__ == '__main__':
import doctest
doctest.testmod()
实现斐波那契数列的几种方法
最新推荐文章于 2022-05-13 18:28:29 发布