为什么我的斐波那契生成器在运行时返回未定义的

时间:2019-03-17 07:17:19

标签: javascript

我正在创建一个fibonacci生成器,该函数将在调用该函数时返回一个数组作为输出。例如,如果我调用函数“ fibonacciGenerator(3)”,则输出应为[0,1,1]的数组。运行代码时,我总是变得不确定。为什么我总是变得不确定?解决此问题的最佳方法是什么?

5

2 个答案:

答案 0 :(得分:0)

您使用了错误的逻辑。将添加项推入数组,并且不为此创建新变量,删除条件错误的if语句,然后从2开始for loo

function fibonacciGenerator(n) {
  //starting fibonacci array from 0 and 1
  var fib = [0, 1];
  for (var i = 2; i < n; i++)
    //add the two preceding numbers to get sum. Fn = Fn-1 + Fn-2
    fib.push(fib[i - 1] + fib[i - 2]);
}
//Return an array of fibonacci numbers.
return fib;
}
console.log(fibonacciGenerator(7));

答案 1 :(得分:0)

获取undefined的原因是因为Fn从未因为if(fib[i] === 2)而被声明。您可以按照以下步骤进行操作。

  • 将数组初始化为[0,1]
  • 创建一个循环,运行n-2
  • 在每个循环中,获取当前数组的最后两个元素的总和,即fib
  • 使用push()
  • 将该总和添加到数组的最后

function fibonacciGenerator(n) {
    //initializing the array to first two number of sequence
    var fib = [0,1]; 
    //Running loop n-2 times
    for (var i = 0; i < n-2; i++) {
        //Adding the sum of last two elements of the array to end of array. 
        fib.push(fib[fib.length - 1] + fib[fib.length - 2]);            
    }
    return fib;
}


console.log(fibonacciGenerator(3));