在索引 2 之后,我在斐波那契数列中得到 NaN

after index 2 i am getting NaN in fibonacci series

在我的 javascript 代码中,我在索引 2 之后得到 NaN,就像我将 5 作为输入然后我得到 [0,1,NaN,NaN,NaN] 但我不明白为什么我我得到这个 NaN,它表示什么作为答案

var a = [];

var n = prompt("enter a number: ");

for (var i = 1; i <= n; i++) {
  if (i === 1) {
    a.push(0);
  }

  if (i === 2) {
    a.push(1);
  } else if (i > 2) {
    var num1 = a[i - 1];
    var num2 = a[i - 2];
    var num3 = a[i - 1] + a[i - 2];

    a.push(num3);
  }
}

console.log(a);

您必须从 i=0i<n 开始并将所有索引减少大约 1。

var a=[];

var n=prompt("enter a number: ");
        for(var i=0;i<n;i++)
        {
            if(i===0)
            {
                a.push(0);
            }
    
            if(i===1)
            {
                a.push(1);
            }
            
            else if(i>1){
                var num1=a[i-1];
                var num2=a[i-2];
                var num3=a[i-1]+a[i-2];

               a.push(num3);
            }
        }
   
    console.log(a);

数组索引从零开始。
试试这个:

    var a = [];
    
    var n=prompt("enter a number: ");
    
    for (var i = 0; i <= n; i++) {
      if (i < 2) {
        a.push(1);
      } else {
        var num1 = a[i - 1];
        var num2 = a[i - 2];
        var num3 = a[i - 1] + a[i - 2];
    
        a.push(num3);
      }
    }
    
    console.log(a);

您的代码存在问题:var num3 = a[i - 1] + a[i - 2];。将其更新为 var num3 = a[i - 2] + a[i - 3]; 将修复,因为您以 1 开始计数器索引变量,但数组位置索引以 0 开头。

将您的代码更新为:

let a = [];
let n = prompt("enter a number: ");

if (n >= 1) {
  a.push(0);
}
if (n >= 2) {
  a.push(1);
}

for (let i = 2; i < n; i++) {
    a.push(a[i - 1] + a[i - 2]);
}

console.log(a);