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

但它如何作为阵列存储变量?
答案 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]