0Pricing
C Academy · Lección

Recursión frente a iteración

Cuándo elegir cada una

Recursión frente a iteración es una lección gratuita de C Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.

Dos formas de repetir

Muchos problemas se pueden resolver mediante recursión o iteración. La iteración utiliza bucles; la recursión utiliza llamadas a funciones.

Ambas pueden producir el mismo resultado, pero difieren en estilo, uso de memoria y velocidad.

Factorial con un bucle

Aquí se muestra el factorial escrito de forma iterativa con un bucle for. Ninguna función se llama a sí misma; una sola variable acumula el producto.

#include <stdio.h>

long factorial(int n) {
    long result = 1;
    for (int i = 2; i <= n; i++)
        result *= i;
    return result;
}

int main(void) {
    printf("%ld\n", factorial(6));
    return 0;
}

Factorial con recursión

La versión recursiva es más corta y refleja directamente la definición matemática.

Ambas imprimen 720 para factorial(6), pero utilizan mecanismos diferentes.

long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

Diferencias de memoria

La iteración suele utilizar una cantidad fija y pequeña de memoria: tan solo unas pocas variables locales.

La recursión añade un marco de pila por cada llamada, por lo que una recursión profunda utiliza más memoria y puede agotar el espacio de la pila.

Diferencias de velocidad

Cada llamada recursiva tiene un pequeño coste: preparar un marco y regresar de él.

Para tareas sencillas de conteo, los bucles suelen ser un poco más rápidos porque evitan ese coste de las llamadas.

Cuándo conviene la recursión

La recursión resulta especialmente útil cuando el problema es naturalmente recursivo, como ocurre con los árboles, las estructuras anidadas o los algoritmos de divide y vencerás.

En esos casos, el código recursivo es más corto y claro que el bucle equivalente con una pila manual.

Cuándo conviene la iteración

Para repeticiones lineales sencillas, como sumar un array o contar, un bucle es más simple y utiliza memoria constante.

Además, evita cualquier riesgo de desbordamiento de pila con entradas grandes.

int sum_array(int a[], int n) {
    int total = 0;
    for (int i = 0; i < n; i++)
        total += a[i];
    return total;
}

La misma tarea, ambos estilos

La suma de 1 a n se puede realizar de cualquiera de las dos formas. Aquí se muestra la versión iterativa, que devuelve la misma respuesta que la recursión.

#include <stdio.h>

int sum_to(int n) {
    int total = 0;
    for (int i = 1; i <= n; i++)
        total += i;
    return total;
}

int main(void) {
    printf("%d\n", sum_to(100));
    return 0;
}

Convertir una recursión en un bucle

Cualquier recursión se puede reescribir como una iteración, a veces utilizando una pila explícita propia.

La recursión lineal sencilla, como la del factorial o la suma, se convierte en un bucle normal con una variable acumuladora.

#include <stdio.h>

int main(void) {
    int n = 5, result = 1;
    while (n > 1) { result *= n; n--; }
    printf("%d\n", result);
    return 0;
}

Nota sobre la recursión de cola

Una llamada recursiva de cola es la última acción de una función. Algunos compiladores la optimizan y la convierten en un bucle, reutilizando un único marco.

C no garantiza esta optimización, así que no dependa de ella para recursiones profundas.

int sum_tail(int n, int acc) {
    if (n == 0) return acc;
    return sum_tail(n - 1, acc + n);
}

Elegir un enfoque

Pregúntese: ¿el problema es naturalmente anidado o utiliza divide y vencerás? En ese caso, la recursión es adecuada.

¿Se trata de una repetición lineal sencilla con una entrada posiblemente enorme? Entonces la iteración es más segura y, a menudo, más rápida.

Comprobación rápida

Compare ambos enfoques.

Resumen

La recursión y la iteración pueden resolver los mismos problemas. Los bucles utilizan memoria constante y son excelentes para tareas lineales; la recursión es más clara para problemas anidados y de divide y vencerás, pero cuesta un marco de pila por llamada.

Preguntas frecuentes

¿La lección «Recursión frente a iteración» es gratis?

Sí — el texto completo de «Recursión frente a iteración» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Recursión frente a iteración»?

Cuándo elegir cada una Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C Academy?

No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Recursión frente a iteración»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C Academy?

Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Cómo funciona la recursión
  2. Problemas recursivos clásicos
  3. Recursión frente a iteración
  4. Evitar el desbordamiento de pila
← Volver a C Academy