在下面的代码中,如果我分别查看它们,我可以跟踪每个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