關於斐波那契數的兩大種方法解

2021-10-13 21:35:11 字數 649 閱讀 8513

斐波那契數,通常用 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的寫法似乎不像分治,實際上我們把它寫成下面這樣就比較明...