0
创建fibonachi数字数组:为什么这是无限循环? (JavaScript)的
function sumFibs(num) {
var list = [1,1];
var next = list[list.length-1] + list[list.length-2];
while (true) {
if (next<=num) {
list.push(next);
} else {
return list;
}
}
}
sumFibs(10);
这给了我无限循环。
如果我在list.push(next);
之后加上next = list[list.length-1] + list[list.length-2];
就行了。 为什么?
你只调用函数一次,有你的循环内没有增量。 num ALWAYS = 10 and next ALWAYS = list [list.length-1] + list [list.length-2];所以...它会永远持续下去。正如你注意到的那样,当你在while循环中添加增量时,它就像它应该那样工作。 – Ben
如果您在循环体中既不修改'next'也不修改'num',条件'next <= num'怎么会从true变为false? *当然*你有一个无限循环。 –
您只在循环的外部赋值给'next'变量一次,因此循环内部没有任何变化可以满足返回条件。顺便说一句,你应该使用该条件作为'while'循环的条件,而不是'true',并在循环之后返回。 –