2017-01-30 169 views
0

在下面的代碼中,如果我分別查看它們,我可以跟蹤每個for循環迭代的次數。例如,兩個for循環迭代10次,但當您將它們放在一起時,字符串「hi」會打印超過20次。你如何計算嵌套for循環迭代的次數?

內循環迭代多少次?

for(int j=0; j<10; j++) 
    for(int k=10; k>0; k--) 
     System.out.println("hi"); 
+6

如果你十次做十件事,那麼你已經做了100件事。 –

+0

正如@ElliottFrisch所說,「hi」將被打印100次 – mc20

+0

哦,我明白了。所以當我說內循環重複10次時我正確嗎? – coderrr

回答

3

這很簡單,只要乘以每個迭代的次數(在本例中爲10 * 10)即可。如果您發現它不是這樣簡單,你可以執行以下測試:

int count = 0; 
for(int j=0; j<10; j++){ 
    for(int k=10; k>0; k--){ 
     count++; 
    } 
} 
System.out.println("The nested loop iterated " + String.valueOf(count) + " times!"); 

編輯:也許一個更簡單的方法來了解正在發生的事情:

int total_count = 0; 
for(int j=0; j<10; j++){ 
    System.out.println("The outer loop has iterated " + String.valueOf(j+1) + " times!"); 
    System.out.println("Executing the inner loop"); 
    int local_count = 0; 
    for(int k=10; k>0; k--){ 
     local_count ++; 
     total_count ++; 
     System.out.println("Inner loop #" + String.valueOf(j+1) + " has iterated " + String.valueOf(local_count) + " times!"); 
     System.out.println("The inner loop's total iterations are " + String.valueOf(total_count) + " times!"); 
    } 
} 
System.out.println("The nested loop iterated " + String.valueOf(total_count) + " times!"); 
+0

該測試打印出嵌套循環迭代100次。這是否意味着它不是與其他循環分開的? – coderrr

+0

它是分開的,每次外層循環迭代時,k的值被重置爲10,所以內層循環重新啓動。 但是因爲外層循環迭代10次而內層循環是內層外層循環,所以內層循環執行10次並迭代10次(10×10)。所以內循環內的代碼將執行100次。 – ChickenFeet

+0

我想我開始明白了。但是,問「內部**循環迭代多少次?」和「**嵌套**循環迭代多少次?」不同?如果他們不同我的理解是內循環迭代10次,嵌套循環迭代100次。如果我錯了,請糾正我。 – coderrr

0

當與處理嵌套循環總是嘗試將第一個循環j可視化爲行,第二個循環爲k作爲列。

enter image description here

該行去left-to-right,列去top-to-bottom。如果你乘以row x column大小,那麼通常會遇到多少次迭代。

+0

從這裏,我的理解是,嵌套循環迭代10次,但整個程序迭代100次? – coderrr

+0

@ally行(j在你的情況下)迭代10次。列(k在你的情況下)迭代10次。既然你已經嵌套了循環,你正在乘以'j x k',因此嵌套循環迭代了100次。 – coletrain

+0

你真的只是爲了回答一個問題而去掉乘法表嗎? -_- –