首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的fibonacci生成器在运行时未定义返回

为什么我的fibonacci生成器在运行时未定义返回
EN

Stack Overflow用户
提问于 2019-03-17 07:17:19
回答 2查看 71关注 0票数 0

我正在创建一个fibonacci生成器,当函数被调用时,它将返回一个数组作为输出。例如,如果我调用函数"fibonacciGenerator(3)“,输出应该是0、1、1的数组。为什么我总是搞不清楚?解决这个问题的最好方法是什么?

代码语言:javascript
复制
function fibonacciGenerator(n) {

    //starting fibonacci array from 0 and 1
    var fib = [0,1]; 


for (var i = 0; i < fib.length; i++) {

  if(fib[i] === 2){
      //add the two preceding numbers to get sum. Fn = Fn-1 + Fn-2
     var Fn = fib[i -1] + fib[i -2];
     console.log(Fn);                 
  }
}

    //Return an array of fibonacci numbers.
    return Fn;
}


fibonacciGenerator (3);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-17 07:22:26

您之所以获得undefined,是因为Fn从未被声明,因为if(fib[i] === 2).You可以执行以下步骤。

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

代码语言:javascript
复制
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));

票数 0
EN

Stack Overflow用户

发布于 2019-03-17 07:22:00

你使用了错误的逻辑。将添加的内容推到数组中,不要为此创建新变量,删除它有错误条件的if语句,并从2启动for loo。

代码语言:javascript
复制
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));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55204721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档