JavaScript斐波納契數列非遞迴演算法

2021-09-09 05:12:18 字數 715 閱讀 9148

一般斐波納契數列採用遞迴或是陣列快取的方式,這裡的方法不考慮重複計算斐波納契數列的情況。

n = 1,2 時,fib(n) = 1

n > 2 時,fib(n) = fib(n-2) + fib(n-1)

1、遞迴

function fib(n)

2、陣列快取

var itermemofib = function()

} return cache[n - 1];

} }();

3、直接使用加法

function fib(n)

var a = 1, b = 1;

for (var i = 2; i < n - 1 ;i++ )

return a + b;

}對比:

如果只使用一次運算,第三種方法速度最快;

如果多次使用,第二種方法明顯優於其它兩種;

在n較大的情況下不推薦使用第一種;n為10*10000的時候遞迴就已經報記憶體溢位了

下面是在ie8下測試的結果(n為100w):

如果只需要計算一次,第三種方法應該是最優的,而且當n越大的時候,陣列占有的記憶體空間也將越大。

完整**:

斐波納契數

斐波納契數 指斐波那契 leonardo fibonacci,約1175 約1240 發現的數。在1202年斐波納契的著作 算盤書 裡記載著兩道有趣的題目。坐落在義大利比薩的斐波那契雕像 第乙個題目 有七個老婦人正去往羅馬。她們每個人都拉著七匹騾子,每匹騾子馱七個袋子,每個袋子裡有七個麵包,每個麵包...

斐波納契數列

f 1 0 f 2 1 f n f n 1 f n 2 斐波納契數列決定審美和諧性 800年前,義大利的數學家李奧納多 斐波那契出版了驚世之作 算盤書 在 算盤書 裡,斐波納契提出了著名的 兔子生兔子的問題 有乙個人把一對兔 子放在四面圍著的地方。假定每個月一對兔子生下另外一對。而這新的一對在二個月...

斐波納契數列

斐波納契數列又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 此本章通過多種方式實現斐波納契數列 第一種 for 迴圈實現 a,b 0,1 for i in ...