Nested Iteration · Iteración Anidada
| English | Español |
|---|---|
| nested iteration/ˈnestɪd ˌɪtəˈreɪʃn/ | iteración anidada |
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.
Un bucle dentro de otro
- Iteración anidada 嵌套迭代 coloca un bucle dentro del cuerpo de otro.
- El bucle interno se ejecuta completamente en cada pasada del bucle externo.
- Si el externo se repite
mveces y el internonveces cada una → el cuerpo interno se ejecutam × nveces. - La anidación es útil para manejar cuadrículas, tablas y comparaciones de todos los pares.
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.
Filas y columnas
- Un uso común: bucle externo para filas, bucle interno para columnas.
for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { ... } }- Para cada fila, el bucle interno recorre todas las columnas antes de que el externo avance.
- Esto visita cada celda de una cuadrícula 2-D en orden.
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.
Rastrear el orden
- El bucle interno completa todas sus pasadas, luego el externo da un paso.
- Externo
r=0: internoc=0,1,2; externor=1: internoc=0,1,2; y así sucesivamente. - Reinicia cualquier contador interno al inicio de cada pasada externa.
- Rastrea despacio — mezclar qué bucle avanza es un error común.
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.
Cuidado con la variable interna
- Declara el contador del bucle interno dentro o reinícialo en cada pasada externa.
- Si reutilizas una variable externa en la condición interna, vigila interferencias.
- Los contadores interno y externo deben ser independientes a menos que quieras lo contrario.
- Un patrón triangular (
cdesde0hastar) hace que el conteo interno dependa del externo.
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.
En bucles anidados, el bucle interno se ejecuta COMPLETAMENTE por cada pasada externa. Por lo tanto, el cuerpo interno se ejecuta outer × inner veces — una anidación 10 × 10 ejecuta su cuerpo interno 100 veces, no 20. Reinicia el contador interno en cada pasada externa (declararlo en el encabezado for del bucle interno hace esto automáticamente), o la segunda pasada externa comenzará donde la primera quedó.
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.
Imprimir una cuadrícula de estrellas 3×3:
for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { print("*"); } println(); }- El externo se repite
3veces; el interno3veces cada una →9estrellas en total. - Cada pasada externa imprime una fila de tres estrellas, seguida de un salto de línea.
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.
La iteración anidada coloca un bucle dentro de otro; el bucle interno se ejecuta completamente por cada pasada externa, por lo que el cuerpo interno se ejecuta outer × inner veces. Es el patrón para cuadrículas (externo = filas, interno = columnas). Reinicia el contador interno en cada pasada externa, y rastrea cuidadosamente — el interno termina antes de que el externo avance.
Nested loops sweep a grid · Los bucles anidados recorren una cuadrícula
Outer = rows, inner = columns; the inner loop fills each row. · Externo = filas, interno = columnas; el bucle interno rellena cada fila.
Outer loop runs 3 times, inner runs 3 times each. How many times does the inner body run? · El bucle externo se ejecuta 3 veces, el interno 3 veces en cada pasada. ¿Cuántas veces se ejecuta el cuerpo del bucle interno?
3 × 3 = 9.
In nested loops, the inner loop runs fully for every single pass of the outer loop. · En los bucles anidados, el bucle interno se ejecuta completamente en cada pasada del bucle externo.
That's why the inner body runs outer × inner times. · Por eso el cuerpo del bucle interno se ejecuta outer × inner veces.
For a 2-D grid, which loop typically handles the columns? · Para una cuadrícula 2-D, ¿qué bucle maneja típicamente las columnas?
Outer = rows, inner = columns. · Externo = filas, interno = columnas.
A 10 × 10 nested loop runs its inner body how many times? · Un bucle anidado de 10 × 10 ejecuta su cuerpo interno cuántas veces?
10 × 10 = 100.
Declaring the inner counter in the inner for-header resets it each outer pass. · Declarar el contador interno en el encabezado for interno lo reinicia en cada pasada externa.
A fresh int i in the inner header restarts it each time. · Un int i fresco en el encabezado interno lo reinicia cada vez.