js斐波那契數列
阿新 • • 發佈:2017-09-16
動態規劃 strong pan 開始 遞歸算法 code var val for
斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89......
這個數列從第3項開始,每一項都等於前兩項之和。
1.遞歸算法:
function fib(n) { if (n < 2) { return n; }else { return fib(n-1) + fib(n-2); } }
2.動態規劃算法
function fib(n) { var val = []; for(var i = 0; i <= n; ++i) { val[i] = 0; } if (n == 1 || n == 2) { return 1; }else { val[1] = 1; val[2] = 2; for (var i = 3; i <= n; ++i) { val[i] = val[i-1] + val[i-2]; } returnval[n-1]; } }
動態規劃需要用到數組的原因是因為動態規劃算法通常需要將中間結果保存起來。當計算fib(20)及更大的數字時,動態規劃的解決方案比遞歸的解決方案更高效。
3.叠代法
function fib(n) { var last = 1; var nextLast = 1; var result = 1; for (var i = 2; i < n; ++i) { result = last + nextLast; nextLast= last; last = result; } return result; }
js斐波那契數列