2016-01-12 87 views
0

我目前正在對重新讀取變化給人收銀例子。我不允許改變對主函數抽屜的調用,我在裏面創建了一個以遞減for循環開始的函數,在for循環中我有一組if/if語句來檢查,如果它傳入其中一個條件,並檢查另一組if/if else語句,有時它不會匹配第二個集合中的任何條件,因爲for循環沒有達到正確的索引。如果它匹配第二個集合中的一個如果/如果else語句將i ++加回去,以便我可以再次檢查並在索引不爲空的情況下再次檢查。我不知道是否i ++給我無限循環,或者如果我不能回到for循環增加。我試過用筆和紙做過,但我沒有看到錯誤。如果你想看看它,這是codepen:http://codepen.io/RawleJuglal/pen/EPXvQX函數findNextChangeDenom。for循環與幾個if /如果其他條件造成無限循環

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 
    {} 
} 
+0

爲什麼所有其他的塊如果有i ++?然後我不會減少。這就是爲什麼你有一個無限循環 – user7

+0

當時的想法是,如果它不符合第一套的if/else if語句也不會達到那個是做我++第二盤將繼續遞減像正常 –

+0

但如果它得到了什麼通過(你正在談論的第一套)始終?也許這就是發生了什麼事。 – user7

回答

0

是的,通過在循環內增加i,使循環終止取決於您未顯示的條件。如果你的算法保證終止,你應該努力通過不增加循環變量(並確保循環中的每個測試/函數調用保證終止)來使這個保證變得明顯。

0

如果如果始終是真實的第一(或至少大量倍)您的變量,我永遠不會達到0值。

我建議你做這樣的事情:

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

你似乎誤解了IF-ELSEIF階梯結構。程序執行流程根據滿足哪個條件流入其中一個分支。

可用的選項中檢查正在進入任何分支之前完成。因此,您不需要明確要求它「返回」並檢查另一個條件。

希望這會清除它!