# 斐波那契数列计算
# 普通方法 数据一大就需要很长的时间计算
def fibonacci_old(n):
value = 0
if n ==1 or n ==2:
return 1
elif n > 2:
return fibonacci_old(n-1) + fibonacci_old(n-2)
print(fibonacci_old(10))
# 加入缓存机制 优化后 结果秒出
filbonacci_cache = {}
def fibonacci(n):
if n in filbonacci_cache:
return filbonacci_cache[n]
value = 0
if n ==1 or n ==2:
value = 1
elif n > 2:
value = fibonacci(n-1) + fibonacci(n-2)
filbonacci_cache[n] = value
return value
for n in range(1,10000):
print(n,':',fibonacci(n))
# 在普通方法上 优化
from functools import lru_cache
@lru_cache(maxsize=1000)
def fibonacci_old(n):
if type(n) != int:
raise TypeError("数据不为int型")
if n < 1:
raise ValueError("数据必须大于1")
value = 0
if n ==1 or n ==2:
return 1
elif n > 2:
return fibonacci_old(n-1) + fibonacci_old(n-2)
for n in range(1,10000):
print(n,':',fibonacci_old(n))