JS實(shí)現(xiàn)斐波那契數(shù)列的五種方式(小結(jié))
下面是五種實(shí)現(xiàn)斐波那契數(shù)列的方法
循環(huán)
function fibonacci(n){ var res1 = 1; var res2 = 1; var sum = res2; for(var i = 1;i < n;i ++){ sum = res1 + res2; res1 = res2; res2 = sum; } return sum;}
普通遞歸
function fibonacci (n) { if ( n <= 1 ) {return 1}; return fibonacci(n - 1) + fibonacci(n - 2);}
尾遞歸
function fibonacci(n, ac1=1,ac2=1){ if(n<=1){return ac2} return fibonacci(n-1, ac2, ac1 + ac2)}Generator 函數(shù)和for...of循環(huán)// Generator 函數(shù)和for...of循環(huán)function* fibonacci() { let [prev, curr] = [0, 1];// foo(;;)相當(dāng)于死循環(huán) 等于while(1) for (;;) { yield curr; [prev, curr] = [curr, prev + curr]; }}for (let n of fibonacci()) { if (n > 1000) break; console.log(n);}
閉包實(shí)現(xiàn)
const fibonacci = function(){ var mem = [0,1]; var f = function(n){ var res = mem[n]; if(typeof res !== ’number’){ mem[n] = f(n-1) + f(n-2); res = mem[n]; } return res; } return f;}();
到此這篇關(guān)于JS實(shí)現(xiàn)斐波那契數(shù)列的五種方式(小結(jié))的文章就介紹到這了,更多相關(guān)JS 斐波那契數(shù)列內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 詳解CSS開發(fā)過程中的20個(gè)快速提升技巧2. asp讀取xml文件和記數(shù)3. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟4. 如何使用ASP.NET Core 配置文件5. 常見 PHP ORM 框架與簡(jiǎn)單代碼實(shí)現(xiàn)6. 一篇文章帶你了解JavaScript-語(yǔ)句7. PHP下載CSS文件中的圖片8. ASP+ajax實(shí)現(xiàn)頂一下、踩一下同支持與反對(duì)的實(shí)現(xiàn)代碼9. .Net core 的熱插拔機(jī)制的深入探索及卸載問題求救指南10. XML 取得元素的字符數(shù)據(jù)
