我正在创建一个fibonacci生成器,当函数被调用时,它将返回一个数组作为输出。例如,如果我调用函数"fibonacciGenerator(3)“,输出应该是0、1、1的数组。为什么我总是搞不清楚?解决这个问题的最好方法是什么?
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);发布于 2019-03-17 07:22:26
您之所以获得undefined,是因为Fn从未被声明,因为if(fib[i] === 2).You可以执行以下步骤。
[0,1]n-2时间的循环fibpush()将该和添加到数组的最后一个
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));
发布于 2019-03-17 07:22:00
你使用了错误的逻辑。将添加的内容推到数组中,不要为此创建新变量,删除它有错误条件的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));
https://stackoverflow.com/questions/55204721
复制相似问题