(i)当我在代码下面运行时,
var fib = [];
for(var i=1; i<=10; i++){
if (i === 1) {
fib[0] = 0;
} else if (i == 2) {
fib[1] = 1;
} else {
fib[i] = fib[i-2] + fib[i-3];
console.log(fib[i]);
}
}
Output: 0 1 undefined 1 NaN NaN
(ii)当我在代码下面运行时,
function generateFib(num) {
var fib = [];
for(var i=1; i <= num; i++) {
if (i === 1) {
fib.push(0);
} else if (i == 2) {
fib.push(1);
} else {
fib.push(fib[i - 2] + fib[i - 3]);
}
}
return fib;
}
generateFib(10);
Output: 0 1 1 2 3 5
我在两个代码之间感到困惑,请你解释一下,谢谢。
答案 0 :(得分:0)
逐个循环迭代
在第三次迭代中,
fib[2] = fib[2-2] + fib[2-3];
是fib[2] = fib[0] + fib[-1];
fib[2] = 0 + undefined;
fib[2] = undefined;
在第四次迭代中,
fib[3] = fib[3-2] + fib[3-3];
是fib[3] = fib[1] + fib[0];
fib[3] = 1 + 0;
在第五次迭代中,
fib[4] = fib[4-2] + fib[4-3];
是fib[4] = fib[2] + fib[1];
fib[4] = undefined + 1;
fib[4] = NaN;
你可以弄清楚其余部分。
顺便说一句,您可以使用带断点的调试器。
在这种情况下它会非常有用。