JS用For迴圈實現斐波那契數列 及尾遞迴優化

2021-09-23 23:37:48 字數 803 閱讀 7737

斐波那契數列指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:f(1)=1,f(2)=1, f(n)=f(n-1)+f(n-2)(n>=3,n∈n)*

遞迴實現

function fibo(n) 

if(n <= 2) else

}

遞迴非常占用記憶體,所以不能進行多次遞迴呼叫,可以用for迴圈改進

for迴圈實現

因為這裡面,我們從前面依次往後累加,所以需要定義三個變數, n_value = pre + next

function fibo(n) 

if(n <= 2)

let pre = 1; //第一次迴圈pre是f(1)也就是1

let next = 1; //第一次迴圈next是f(2)也就是1

let n_value = 0; // 儲存f(n)的值

for(let i = 3; i <= n; i++)

return n_value;

}

尾遞迴優化

尾遞迴,函式最後一步呼叫自身

function fibo(n, a1=1, a2=1) 

return fibo(n-1, a2, a1+a2);

}

迴圈斐波那契數列 用Python實現斐波那契數列

斐波那契數列 fibonacci sequence 又稱 分割 數列 因 數學家萊昂 納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 最開始我一直不能理解兔子問題怎麼和斐波那契數列聯絡在一起的,然後畫了這個圖之後,就明白了。第一年有一對小兔子,一...

js 斐波那契數

斐波那契數,指的是這樣乙個數列 1 1 2 3 5 8 13 21 在數學上,斐波那契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn fn 1 fn 2 n 2,n n 用文字來說,就是斐波那契數列由 0 和 1 開始,之後的斐波那契數列係數就由之前的兩數相加。常用的計算斐波那契數列的方法分...

斐波那契數

入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,...