我一直在讨论这个主题的各种线程和语言,但我似乎找不到一个解决方案,用于设置一个条形码,以便在Javascript中使用do while
循环将fibonacci序列设置为低于100。
var fbnci = [0, 1];
var i = 2;
do {
// Add the fibonacci sequence: add previous to one before previous
fbnci[i] = fbnci [i-2] + fbnci[i-1];
console.log(fbnci[i]);
fbnci[i]++;
}
while (fbnci[i] < 100);
由于某种原因,上面的代码只运行一次。我应该将while条件设置为什么才能保持打印结果,直到达到最接近100的值?
答案 0 :(得分:2)
代码中有错误,应该是:
var fbnci = [0, 1], max = 100, index = 1, next;
do {
index++;
next = fbnci[index-2] + fbnci[index-1];
if (next <= max) {
console.log(next);
fbnci[index] = next;
}
} while(next < max);
打印低于最大值
的所有fib数的解决方案答案 1 :(得分:1)
对我来说,这是一个无限循环,一直打印出来1.你需要增加i而不是递增fbnci [i]:
i++
代替fbnci[i] ++
此外,您仍然会在while条件下失败,因为您正在检查nil值。你想改变你的时间来检查fbnci [i-1]:
} while(fbnci[i-1]<100);
答案 2 :(得分:-1)
循环只发生一次,因为在时间i=3
之前,你的while条件无法检查fbci[3] < 100
fbnci[3]
是否为undefined
。
你可以这样做
var fbnci = [0, 1];
var i = 1;
while(fbnci[i] < 100) {
fbnci.push(fbnci[i] + fbnci[i-1]);
i++;
}
console.log(fbnci);