2017-01-30 1452 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

你真的只是为了回答一个问题而去掉乘法表吗? -_- –