javascript Fibonacci序列返回未定义

时间:2018-11-18 02:17:54

标签: javascript

我是Java语言的新手,我试图编写一个返回斐波那契数列的小函数。这是我的代码:

function fib2(n) {
  let fib = [];
  fib[0] = 1;
  fib[1] = 1;
  for (var i = 2; i < n; i++) {
    fib[i] = fib[i - 2] + fib[i - 1];
  }
  return fib[i];
}

console.log(fib2(6));

,但结果不确定。我想这是因为某些关闭问题,但我不确定原因。有人可以解释发生了什么吗?谢谢

2 个答案:

答案 0 :(得分:1)

function fib2(n) {
    let fib = [];
    fib[0] = 1;
    fib[1] = 1;
    for (var i = 2; i < n; i++) {
        fib[i] = fib[i-2] + fib[i-1];
    }
    return fib;
}
console.log(fib2(6));

输出

(6) [1, 1, 2, 3, 5, 8]

此外

如果我是您,我正在尝试更改函数名称和函数中变量的名称以进行区分。

function fib(n) {
  let arr = [];
  arr[0] = 1;
  arr[1] = 1;
  for(let i = 2; i < n; i++){
    arr[i] = arr[i-2] + arr[i-1];
  }
  return arr;
}
console.log(fib(6));

如果要获取序列的最后一个元素,

function lastFib(n){
  let prev = 1;
  let now = 1;
  let temp = 0;
  for(let i = 2; i < n; i++){
    temp = now;
    now = prev + now;
    prev = temp;
  }
  return now;
}
console.log(lastFib(6));

答案 1 :(得分:1)

for循环之后,变量i的值为n,因此fib [i]不在数组中。

function fib2(n) {
  let fib = [];
  fib[0] = 1;
  fib[1] = 1;
  for (var i = 2; i < n; i++) {
    fib[i] = fib[i - 2] + fib[i - 1];
  }
  return fib[n-1];
}

console.log(fib2(6));