javascript 用迭代数组栈递归重写

javascript recursion rewriting with iterative array stack

需要一个模板来将递归 javascript 函数重写为迭代数组堆栈。希望这种方法比标准递归更快并且使用更少的内存。我使用对象引用作为参数。我的功能是 negascout,但我喜欢对更小、更优雅的工具进行逆向工程 Fibonacci_sequence。

一个更简单的例子是重写Fibonacci_sequence。

rosettacode 到 Fibonacci_sequence

function fibonacci(n) {
   if (n < 2){
     return 1;
   }else{
     return fibonacci(n-2) + fibonacci(n-1);
   }
}

console.log(fibonacci(7));
//Returns 21

迭代方式可以是:

function iterativeFibonacci(n){
  if (n < 2){
     return 1;
  }

  var i;
  var fibs = new Array();
  fibs.push(0);
  fibs.push(1);
  for(i=0; i<=n; i++){
    fibs.push(fibs[0] + fibs[1]);
    fibs.shift();
  }
  return fibs[0];
}

document.write(iterativeFibonacci(7));