在下面的代碼中,如果我分別查看它們,我可以跟蹤每個for循環迭代的次數。例如,兩個for循環迭代10次,但當您將它們放在一起時,字符串「hi」會打印超過20次。你如何計算嵌套for循環迭代的次數?
內循環迭代多少次?
for(int j=0; j<10; j++)
for(int k=10; k>0; k--)
System.out.println("hi");
在下面的代碼中,如果我分別查看它們,我可以跟蹤每個for循環迭代的次數。例如,兩個for循環迭代10次,但當您將它們放在一起時,字符串「hi」會打印超過20次。你如何計算嵌套for循環迭代的次數?
內循環迭代多少次?
for(int j=0; j<10; j++)
for(int k=10; k>0; k--)
System.out.println("hi");
這很簡單,只要乘以每個迭代的次數(在本例中爲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!");
該測試打印出嵌套循環迭代100次。這是否意味着它不是與其他循環分開的? – coderrr
它是分開的,每次外層循環迭代時,k的值被重置爲10,所以內層循環重新啓動。 但是因爲外層循環迭代10次而內層循環是內層外層循環,所以內層循環執行10次並迭代10次(10×10)。所以內循環內的代碼將執行100次。 – ChickenFeet
我想我開始明白了。但是,問「內部**循環迭代多少次?」和「**嵌套**循環迭代多少次?」不同?如果他們不同我的理解是內循環迭代10次,嵌套循環迭代100次。如果我錯了,請糾正我。 – coderrr
如果你十次做十件事,那麼你已經做了100件事。 –
正如@ElliottFrisch所說,「hi」將被打印100次 – mc20
哦,我明白了。所以當我說內循環重複10次時我正確嗎? – coderrr