每当我想到使用while loop
时,我都不明白为什么我不能只使用if statement
。我知道while循环运行'while'给定的语句是真的,但是如果条件瞬间在块内终止,那么我无法看到发生的任何事情,而'有些事情是真的。如果有人能举例说明我应该如何/为什么要使用while loop
。非常感谢。
答案 0 :(得分:7)
我将尝试给你一个非常高级的答案,因为我认为直观地掌握它会更容易。
将所有算法视为食谱。典型的配方可能包含如下所示的部分:
这些类型的指示让您以不同的方式完成任务。
第一个真的是“if”声明。如果条件(花生有壳)是真的,你会做点什么。你真的这样做:
if (not shelled) {
shell the peanut! // happens once
}
第二个是while循环。你打蛋而没有搅打和起泡。你一遍又一遍地做同样的事情(鞭打),然后你一边看着它(一遍又一遍)检查,看看它是否已经变得非常起泡。一旦它起泡并充分搅打,你就会停下来。当你停止它是因为你已经通过你的“同时”条件。需要注意的一件重要事情是,在开始之前,你不一定知道将鸡蛋鞭打多少“节拍”。你必须多次这样做并多次检查(用你的眼睛)。你真的这样做:
while(not whipped enough) {
beat egg! // happens over and over
}
就像在食谱中一样,你不希望有人在时间结束前做某个动作,所以你必须始终确保你的while循环有合理的停止条件。大多数while循环依赖于循环内部的某些变化,并且当该东西发生足够的变化时会停止。
第三个配方示例是for循环。对于你拥有的每个洋葱(5)你只对那个洋葱做一次。你真的这样做:
for (onions 1 to 5) {
Chop an onion! // done 5 times total, once per onion
}
答案 1 :(得分:2)
while
是一个循环结构,而不仅仅是if
var i = 0;
while ( i < 10 ) {
//this stuff will happen until
//i < 10
// usually you iterate the counter so it
// eventually breaks the loop because
// i < 10 is no longer true
i++;
}
这与此
相同for (var i = 0; i < 10; i++) {
//this stuff will happen until
//i < 10
}
适用于
的良好用例通常在需要发生的迭代次数已知时使用for
循环,因此通常在迭代数组并且知道数组for
的长度时一个很好的选择,因为你可以明确地设置迭代量。
while
的一个更好的用例是迭代量不是静态的(已知的)和/或您正在等待事件发生以打破循环。
答案 2 :(得分:1)
只要符合条件,while
循环就会反复执行 ,如果条件永远不会改变,它将会变为无穷大。
满足条件时if
将执行一次
答案 3 :(得分:1)
while
会一直运行,直到条件变为假
如果条件在块结束时仍然为真,则循环将重新运行。
if
只会运行一次。
答案 4 :(得分:1)
好if statement
不会循环回来。它只会发生一次,除非你把它放在循环中。只要声明仍然正确,while statement
将不止一次发生。
答案 5 :(得分:0)
如果你想创建一个无限循环,while循环就可以实现这个技巧
var done=false;
while(!done){
alert("I am annoying");
}
答案 6 :(得分:0)
可以使用while模拟for
语句:
for(var i=0; i<length; i++) {}
// is the same as
var i=0;
while(i<length) {
// stuff
i++;
}
它也用于像:
这样的循环while(true) {
// stuff... (like waiting for user input, analyzing some data until
// it hits a brick wall and needs to quit)
if(some_condition) {
break;
}
}
或其他东西:
while(a != b) {
if(a > b) {
a -= b;
} else {
b -= a;
}
} // find the GCD of a and b
正如您所看到的,它与if
非常不同,并解决了其他问题。