遞迴版本:函式在執行的過程中呼叫了本身,通常用於分治法,即將問題拆分為規模較小的子問題
def fib1(n):
return 1 if n<=1 else fib1(n-1)+fib2(n-2)
list(map(fib1,range(10)))
輸出:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]非遞迴版本:
def fib2(n):
a,b=1,1
for _ in range(n):
a,b=b,a+b
return a
tmp = map(fib2,range(10))
list(tmp)
快取版本:
def fib3(n,cache=):
try:
return cache[n]
except keyerror:
cache[n]=fib3(n-1)+fib3(n-2)
return cache[n]
list(map(fib3,range(10)))
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...
python 斐波那契數列
用python寫斐波那契數列當然大家都寫的出來。當時如果用一行 寫呢。本來沒有打算用一行 寫的。後來看到有用一行 寫階乘的。reduce lambda x,y x y,i for i in range 1,n 1 當然在這之前需要 from functools import 好吧,如果你願意,就算兩...
python斐波那契數列
學習過python基礎語法,我們嘗試做乙個簡單的斐波那契數列。斐波納契數列 兩個元素的總和確定了下乙個數 a,b 0,1 while b 10 print b a,b b,a b執行以上程式,輸出 112 358end關鍵字 關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾新增不同的字元,例...