一个for循环,有几个if / if else条件导致无限循环

时间:2016-01-12 18:08:23

标签: infinite-loop

我目前正在制作一个收银机示例,该示例会将更改读回给某人。我不允许将呼叫更改为主功能抽屉。我在里面创建了一个函数,它以递减循环开始。在for循环内部,我有一组if / if else语句要检查,如果它通过其中一个条件进入并检查另一组if / if else语句。有时它不会匹配第二组内的任何条件,因为for循环我没有达到正确的索引。如果它匹配第二组if / if else语句中的一个,它将i ++添加回来以便我可以返回并检查在索引不为空的情况下再次出现。我不知道是不是i ++给了我无限循环,或者我是否能够回到for循环来增加。我已经尝试用笔和纸进行检查,但我没有看到错误。如果你更喜欢它,这就是codepen:http://codepen.io/RawleJuglal/pen/EPXvQX函数findNextChangeDenom。

for(i=highNumber;i>=0;i--)
 {
   if(condition)
     if(condition)
       {
         do some code
         i++ //add 
       }
     else if(condition)
       {
         do some code
         i++
       }
     else if(condition)
       {
         do some code
         i++
       }
   else if(condition)
   {}
   else
   {}
 }

3 个答案:

答案 0 :(得分:0)

是的,通过在循环中递增i,您可以根据未显示的条件进行循环终止。如果你的算法保证终止,你应该努力通过不增加循环变量来明确这个保证(并确保循环中的每个测试/函数调用都能保证终止)。

答案 1 :(得分:0)

如果第一个if总是为真(或至少是很多次),那么你的变量永远不会达到0值。

我建议你做这样的事情:

while(true){
            if(condition){
                //do your operations
            }else{
                 break;
            }
}

答案 2 :(得分:0)

你似乎误解了if-elseif阶梯的构造。程序执行流程基于满足条件流入其中一个分支。

在进入任何分支之前,检查可用选项。因此,您无需明确要求它“返回”并检查另一个条件。

希望这清除它!