javascript - 作为数组变量?

时间:2017-06-13 12:07:22

标签: javascript arrays recursion

JavaScript'如何存储' s变量作为数组?为什么不会在这一行"s.push(s[s.length - 1] + s[s.length - 2]); "

中覆盖s变量



var number = prompt("fibonacci")

var fibo = function(n) {
  if (n === 1) {
    return [0, 1];
  } else {
    var s = fibo(n - 1);
    s.push(s[s.length - 1] + s[s.length - 2]);
    return s;
  }
}
console.log(fibo(number));




但它如何作为阵列存储变量?

2 个答案:

答案 0 :(得分:1)

return [0, 1]; // Creates the array
...
var s = fibo(n - 1); // Assigns array to s (s references array)

s.push(s[s.length - 1] + s[s.length - 2]);

仅推送写入数组(左侧)

同一行上的其他操作仅从中读取(右侧)

我建议您从基础开始,然后从递归函数开始。

答案 1 :(得分:0)

Push不会覆盖数组,而只是将新项添加到它的末尾。

var s = [0, 1];

var lastItem = s[s.length - 1]; // 1
var itemBeforeLast = s[s.length - 2]; // 0
var sum = lastItem + itemBeforeLast; // 1

s.push(sum); // s is now [0, 1, 1]
相关问题