在 JS 中创建斐波那契数列时无法获取数组中的前两项

Unable to get the first two items in an array when creating a Fibonacci sequence in JS

我一直在尝试使用简单的 JS 创建一个始终以 [0, 1] 开头的斐波那契数列。但是,现在这样写,当我调用相应的 n 号时,该函数不会 return 数组中的前两项。因此,对于 n = 1 和 n = 2(并且只有 n 的那些值),我在调用函数时得到未定义。但是,每当我调用 n 大于 2 时,Fibonacci 序列 returns 正确,数组项的数量正确(因此,包括项 0 和 1,我无法自行调用)。

代码如下:

function generator(n) {
var output = [];
var num1 = 0;
var num2 = 1;
var next;

if (n === 1) {
    output = [0];
} else if (n === 2) {
    output = [0, 1];
} else {
    output = [num1, num2];
    for (var count = 2; count < n; count++) {
    next = num1 + num2;
    num1 = num2;
    num2 = next;
    output.push(next); 
}

return output;




}

}

有人知道代码有什么问题吗?非常感谢您的帮助!

首先,您上面发布的代码中的括号存在问题。代码应如下所示。

function generator(n) {
var output = [];
var num1 = 0;
var num2 = 1;
var next;

if (n === 1) {
    output = [0];
} else if (n === 2) {
    output = [0, 1];
} else {
    output = [num1, num2];
    for (var count = 2; count < n; count++) {
    next = num1 + num2;
    num1 = num2;
    num2 = next;
    output.push(next); 
}}

return output;
}

不过,这可能只是一个错字问题。其次,如果我使用更正后的函数类型,就没有问题。

function generator(n) {
var output = [];
var num1 = 0;
var num2 = 1;
var next;

if (n === 1) {
    output = [0];
} else if (n === 2) {
    output = [0, 1];
} else {
    output = [num1, num2];
    for (var count = 2; count < n; count++) {
    next = num1 + num2;
    num1 = num2;
    num2 = next;
    output.push(next); 
}}

return output;
}

//testing
for(let i=1;i<=5;i++){
  console.log(`${i}'th result`)
  console.log(generator(i));
}

试试这个,应该可以的。