python 斐波那契數列計算
阿新 • • 發佈:2018-11-24
# 斐波那契數列計算 # 普通方法 資料一大就需要很長的時間計算 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))