Nested Iteration · Itération imbriquée
| English | Français |
|---|---|
| nested iteration/ˈnestɪd ˌɪtəˈreɪʃn/ | itération imbriquée |
A loop inside a loop
- Nested iteration 嵌套迭代 puts one loop inside another's body.
- The inner loop runs completely for each pass of the outer loop.
- Outer runs
mtimes, inner runsntimes each → the inner body runsm × ntimes. - Nesting handles grids, tables, and all-pairs comparisons.
Une boucle dans une boucle
- L'itération imbriquée 嵌套迭代 place une boucle à l'intérieur du corps d'une autre.
- La boucle interne s'exécute complètement pour chaque passage de la boucle externe.
- Externe s'exécute
mfois, interne s'exécutenfois à chaque passage → le corps interne s'exécutem × nfois. - L'imbrication gère les grilles, les tableaux et toutes les comparaisons entre paires.
Rows and columns
- A common use: outer loop for rows, inner loop for columns.
for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { ... } }- For each row, the inner loop sweeps all columns before the outer advances.
- This visits every cell of a 2-D grid in order.
Lignes et colonnes
- Utilisation courante : boucle externe pour les lignes, boucle interne pour les colonnes.
for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { ... } }- Pour chaque ligne, la boucle interne balaye toutes les colonnes avant que l'externe n'avance.
- Cela visite chaque cellule d'une grille 2D dans l'ordre.
Tracing the order
- The inner loop finishes all its passes, then the outer takes one step.
- Outer
r=0: innerc=0,1,2; outerr=1: innerc=0,1,2; and so on. - Reset any inner counter at the start of each outer pass.
- Trace slowly — mixing up which loop advances is a common mistake.
Tracer l'ordre
- La boucle interne termine tous ses passages, ensuite l'externe fait un pas.
- Boucle externe
r=0: boucle internec=0,1,2; boucle externer=1: boucle internec=0,1,2; et ainsi de suite. - Réinitialisez tout compteur interne au début de chaque passage externe.
- Tracez lentement — confondre quelle boucle avance est une erreur courante.
Watch the inner variable
- Declare the inner loop's counter inside or reset it each outer pass.
- If you reuse an outer variable in the inner condition, watch for interference.
- The inner and outer counters should be independent unless you intend otherwise.
- A triangle pattern (
cfrom0tor) makes the inner count depend on the outer.
Surveiller la variable interne
- Déclarez le compteur de la boucle intérieure à l'intérieur ou réinitialisez-le à chaque passage de la boucle extérieure.
- Si vous réutilisez une variable extérieure dans la condition intérieure, faites attention aux interférences.
- Les compteurs intérieur et extérieur doivent être indépendants sauf si vous en avez l'intention.
- Un motif triangulaire (
cde0àr) fait dépendre le comptage intérieur de l'extérieur.
In nested loops, the inner loop runs FULLY for every single outer pass. So the inner body executes outer × inner times — a 10 × 10 nest runs its inner body 100 times, not 20. Reset the inner counter at each outer pass (declaring it in the inner for header does this automatically), or the second outer pass starts where the first left off.
Dans les boucles imbriquées, la boucle intérieure s'exécute EN TOUT pour chaque passage extérieur. Le corps intérieur s'exécute donc outer × inner fois — une imblication 10 × 10 exécute son corps intérieur 100 fois, pas 20. Réinitialisez le compteur intérieur à chaque passage extérieur (en le déclarant dans l'en-tête intérieur de la boucle for fait cela automatiquement), sinon le deuxième passage extérieur commence là où le premier est resté.
Printing a 3×3 grid of stars:
for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { print("*"); } println(); }- Outer runs
3times; inner runs3each →9stars total. - Each outer pass prints one row of three, then a newline.
Imprimer une grille d'étoiles 3×3 :
for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { print("*"); } println(); }- L'extérieur parcourt
3fois ; l'intérieur parcourt3fois →9étoiles au total. - Chaque passage extérieur imprime une ligne de trois étoiles, puis un retour à la ligne.
Nested iteration puts a loop inside another; the inner loop runs fully for each outer pass, so the inner body executes outer × inner times. It's the pattern for grids (outer = rows, inner = columns). Reset the inner counter each outer pass, and trace carefully — the inner finishes before the outer advances.
L'itération imbriquée place une boucle à l'intérieur d'une autre ; la boucle intérieure s'exécute entièrement pour chaque passage extérieur, donc le corps intérieur s'exécute outer × inner fois. C'est le motif pour les grilles (extérieur = lignes, intérieur = colonnes). Réinitialisez le compteur intérieur à chaque passage extérieur, et tracez soigneusement — l'intérieur se termine avant que l'extérieur n'avance.
Nested loops sweep a grid · Les boucles imbriquées balayent une grille
Outer = rows, inner = columns; the inner loop fills each row. · Extérieure = lignes, intérieure = colonnes ; la boucle intérieure remplit chaque ligne.
Outer loop runs 3 times, inner runs 3 times each. How many times does the inner body run? · La boucle externe s'exécute 3 fois, l'interne 3 fois à chaque fois. Combien de fois le corps interne s'exécute-t-il ?
3 × 3 = 9.
In nested loops, the inner loop runs fully for every single pass of the outer loop. · Dans les boucles imbriquées, la boucle intérieure s'exécute entièrement pour chaque passage unique de la boucle extérieure.
That's why the inner body runs outer × inner times. · C'est pourquoi le corps interne s'exécute outer × inner fois.
For a 2-D grid, which loop typically handles the columns? · Pour une grille 2D, quelle boucle gère généralement les colonnes ?
Outer = rows, inner = columns. · Extérieure = lignes, intérieure = colonnes.
A 10 × 10 nested loop runs its inner body how many times? · Une boucle imbriquée 10 × 10 s'exécute combien de fois son corps interne ?
10 × 10 = 100.
Declaring the inner counter in the inner for-header resets it each outer pass. · Déclarer le compteur interne dans l'en-tête for interne le réinitialise à chaque passage externe.
A fresh int i in the inner header restarts it each time. · Un int i neuf dans l'en-tête interne le redémarre chaque fois.