2017-01-30 6 views
0

Im folgenden Code kann ich verfolgen, wie oft jede der for-Schleifen iteriert, wenn ich sie separat anschaue. Zum Beispiel durchlaufen beide For-Schleifen 10-mal, aber wenn Sie sie zusammenfügen, druckt die Zeichenfolge "hi" mehr als 20 Mal.Wie zählen Sie, wie oft eine verschachtelte for-Schleife iteriert?

Wie oft iteriert die innere Schleife?

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

Wenn Sie zehn Dinge zehn Mal tun, dann haben Sie 100 Dinge getan. –

+0

als @ElliottFrisch sagte, 'hallo' wird 100 Mal gedruckt werden – mc20

+0

Oh ich sehe. Also war ich richtig, als ich sagte, dass die innere Schleife 10 Mal iteriert? – coderrr

Antwort

3

Es ist so einfach wie Multiplizieren, wie viele jeweils zusammen iterieren (in diesem Fall 10 * 10). Wenn Sie finden es nicht so einfach, wie das ist, können Sie den folgenden Test durchführen:

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!"); 

Edit: Vielleicht einen einfacheren Weg zu verstehen, was vor sich geht:

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

Dieser Test gibt aus, dass die verschachtelte Schleife 100 Mal iteriert. Bedeutet das, dass es nicht getrennt von der anderen Schleife betrachtet wird? – coderrr

+0

Es ist in dem Sinne getrennt, dass jedes Mal, wenn die äußere Schleife iteriert, der Wert von k auf 10 zurückgesetzt wird, so dass die innere Schleife neu startet. Da jedoch die äußere Schleife 10 Mal iteriert und die innere Schleife INNERHALB der äußeren Schleife ist, wird die innere Schleife 10 Mal ausgeführt und iteriert 10 Mal (10 x 10). Der Code innerhalb der inneren Schleife wird also 100 Mal ausgeführt. – ChickenFeet

+0

Ich denke, ich beginne zu verstehen. Allerdings fragt "Wie oft wiederholt sich die ** innere ** Schleife?" und "Wie oft wiederholt sich die ** verschachtelte ** Schleife?" anders? Wenn sie anders sind, verstehe ich, dass die innere Schleife 10 Mal iteriert und die verschachtelte Schleife 100 Mal iteriert. Bitte korrigieren Sie mich, wenn ich falsch liege. – coderrr

0

Beim Umgang mit verschachtelte Schleifen versuchen immer, die erste Schleife j als die Zeile und die zweite Schleife k als die Spalte zu visualisieren.

enter image description here

Die Reihen gehen left-to-right und die Spalten gehen top-to-bottom. Wenn Sie die Größe row x column multiplizieren, ist dies normalerweise die Anzahl der Iterationen, die Ihnen begegnen.

+0

Aus diesem Grund ist mein Verständnis, dass die verschachtelte Schleife 10 Mal iteriert, aber das gesamte Programm iteriert 100 mal? – coderrr

+0

@ally Die Zeile (j in Ihrem Fall) iteriert 10 mal. Spalte (k in Ihrem Fall) iteriert 10 mal. Da Sie die Schleifen verschachtelt haben, multiplizieren Sie "j x k", also iteriert die verschachtelte Schleife 100 Mal. – coletrain

+0

Hast du wirklich einfach eine Multiplikationstabelle aussortiert, um eine Frage zu beantworten? -_- –

Verwandte Themen