斐波那契數,通常用 f(n) 表示,形成的序列稱為 斐波那契數列 。該數列由 0 和 1 開始,後面的每一項數字都是前面兩項數字的和。也就是:
f(0
)=0f
(1)=
1f(n)=
f(n -1)
+f(n -2)
//其中 n > 1
①使用遞迴的方式(解決快,問題復現比較直觀,但是效能差不能計算較大的數值):
var
fib=
function
(n)else
if(n ==1)
return
fib(n -1)
+fib
(n -2)
;};
②使用迴圈,這裡使用陣列存值的方式解(效能佳,能計算較大數值):
var
fib=
function
(n)else
if(n ==1)
var arr =[0
,1]for
(let i =
1; i <= n; i++)}
return arr[n]
;}
Python兩種方法計算斐波那契數列
迭代 非遞迴 def fab n n1 1 n2 1 n3 1 預設初始值為1 if n 1 print 輸入有誤!return 1 while n 2 0 n3 n2 n1 n1 n2 n2 n3 n 1return n3 result fab 20 以20作為測試 if result 1 pri...
斐波那契數的博弈
原題 兩個玩家,一堆石頭,假設多於100塊,兩人依次拿,最後拿光者贏,規則是 1.第乙個人不能一次拿光所有的 2.第一次拿了之後,每人每次最多只能拿對方前一次拿的數目的兩倍。求先拿者必勝策略,如果有的話。怎麼證明必勝。分析這是斐波那契博弈,當且僅當石頭個數是斐波那契數的時候先手必敗。讓我們用第二數學...
斐波那契數列問題的解
解法一 遞迴 1 int fib intn 2 解法二 遞推 1 int fib intn 2 15return res 16 解法三 分治 通項之間有如下關係 其中矩陣a為 根據以下公式,可以log n 次乘法計算出an。函式matrixpow的寫法似乎不像分治,實際上我們把它寫成下面這樣就比較明...