js實現菲波那切數列的兩種常用方法
阿新 • • 發佈:2017-09-14
res alert 定義 面向 div ret 如果 clas cti
菲波那切數列即:1 1 2 3 5 8......,後面的數字是前面兩個數字的和,並且第一個,第二個數字都是1,用js實現
的兩種方法,一種通過常用的遞歸調用,第二種不通過遞歸,而是通過強大的閉包實現。
1.遞歸實現
// fab 1 1 2 3 5 8 function fab(num) { if(num==1 || num==2){ return 1; }else{ return fab(num-1)+fab(num-2); } } alert(fab(5))
2.閉包實現。閉包主要在於:1.模擬面向對象 封裝數據 2.保存數據,因為如果把i,j定義在函數外面,將成為全局變量,不安全,因為會被調用修改,而
用閉包可以很好的封裝數據,不用遞歸一樣可以實現同樣的功能,更常用。
//閉包1.模擬面向對象 封裝數據2.保存數據 var fib = (function () { var i = 1; var j = 1; return function (n) { var res = j;for (var k = 3; k <= n; k++) { res = i + j; i = j; j = res; } return res; } })(); document.write(fib(5));
js實現菲波那切數列的兩種常用方法