1. 程式人生 > 程式設計 >JS實現斐波那契數列的五種方式(小結)

JS實現斐波那契數列的五種方式(小結)

下面是五種實現斐波那契數列的方法

迴圈

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 函式和for...of迴圈
// Generator 函式和for...of迴圈
function* fibonacci() {
 let [prev,curr] = [0,1];
  // foo(;;)相當於死迴圈 等於while(1)
 for (;;) {
  yield curr;
  [prev,curr] = [curr,prev + curr];
 }
}
for (let n of fibonacci()) {
 if (n > 1000) break;
 console.log(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;
}();

到此這篇關於JS實現斐波那契數列的五種方式(小結)的文章就介紹到這了,更多相關JS 斐波那契數列內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!