斐波那契序列Javascript do while循环
在这个主题上,我已经讨论了各种线程和语言,但是我似乎没有找到一个解决方案,可以在Javascript中使用斐波那契序列Javascript do while循环,javascript,do-while,fibonacci,Javascript,Do While,Fibonacci,在这个主题上,我已经讨论了各种线程和语言,但是我似乎没有找到一个解决方案,可以在Javascript中使用do while循环将斐波那契序列的条设置为停止在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(fbnc
do while
循环将斐波那契序列的条设置为停止在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);
var fbnci=[0,1];
var i=2;
做{
//添加斐波那契序列:将上一个添加到上一个之前的一个
fbnci[i]=fbnci[i-2]+fbnci[i-1];
控制台日志(fbnci[i]);
fbnci[i]++;
}
而(fbnci[i]<100);
出于某种原因,上面的代码只运行一次。我应该将while条件设置为什么,以便继续打印结果,直到其达到最接近100的值?如果代码中有错误,则应为:
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);
var fbnci=[0,1],max=100,index=1,next;
做{
索引++;
next=fbnci[index-2]+fbnci[index-1];
如果(next对我来说,它是一个无限循环,不断打印出1。你需要增加i,而不是增加fbnci[i]:
i++
而不是fbnci[i]++
此外,由于正在检查一个nil值,您仍然会失败while条件。您需要将while更改为检查fbnci[i-1]:
}while(fbnci[i-1]循环只发生一次,因为到i=3
时,while条件无法检查fbci[3]<100
,因为fbnci[3]
是未定义的
你可以这样做
var fbnci = [0, 1];
var i = 1;
while(fbnci[i] < 100) {
fbnci.push(fbnci[i] + fbnci[i-1]);
i++;
}
console.log(fbnci);
var fbnci=[0,1];
var i=1;
而(fbnci[i]<100){
fbnci.push(fbnci[i]+fbnci[i-1]);
i++;
}
控制台日志(fbnci);
你的意思肯定是i++;
而不是fbnci[i]++;
?当然你的循环条件需要调整。我想你的意思是增加i
而不是fbnci[i]
在这里使用do while
或普通while
循环都没有多大区别。简单一点。这仍然不起作用。请在发布前尝试一下你的代码。啊,你是对的,检查在后面:),愚蠢的错误-修复,谢谢@BergiIt仍然打印超过100(在144处完成)为什么会这样?@HGB:因为它在找到一个大于100的元素后会停止。是的,它会一个接一个地运行,如果超过100,它会停止执行循环(但它已经赋值了).所以你的期望是在达到100以上之前停止?很好,每个人都专注于增加,但没有人考虑while检查。这只会给我一个'NaN'结果。@HGB真的吗?它对我有效(尽管它也显示144,现在被认为太过分了)因此,在这种情况下不可能使用while循环?您可以通过循环或函数来实现。函数具有更高的内存占用,因为您需要保留堆栈。循环的实现有点棘手,但这是可能的。循环也具有内存占用,因为您的斐波那契数组本质上是一个查找表。我投了反对票,因为当我测试时答案是,它仍然返回一个数组中大于100的额外对象