Recursividad en C: ejercicio resuelto para invertir una cadena

  2 minutos

Si buscas recursividad en C ejercicio resuelto, este ejemplo te enseña una estructura clásica: caso base, llamada recursiva y trabajo al volver.

Implementa una función recursiva que imprima una cadena al revés sin usar arrays auxiliares.

#include <stdio.h>

void imprimir_reves(const char *s) {
    if (*s == '\0') {
        return;
    }

    imprimir_reves(s + 1);
    putchar(*s);
}

int main(void) {
    const char *texto = "programacion";

    printf("Original: %s\n", texto);
    printf("Invertida: ");
    imprimir_reves(texto);
    putchar('\n');

    return 0;
}
Original: programacion
Invertida: noicamargorp

Prueba dos entradas mínimas:

Original: ""
Invertida: ""

Original: "A"
Invertida: A

Sirve para verificar que el caso base corta la recursión correctamente.

  • caso base: cadena vacía,
  • avance: s + 1,
  • fase de retorno: imprimir carácter actual.
  • Olvidar el caso base.
  • Crear recursión infinita.
  • Confundir el orden de impresión (antes o después de llamar).
  • No avanzar el puntero (s + 1) y quedarse en la misma dirección de memoria.
  • Tiempo: O(n), se visita cada carácter una vez.
  • Espacio extra: O(n) por la pila de llamadas recursivas.

La recursión sigue apareciendo en parseo de estructuras jerárquicas, navegación de árboles y análisis de datos anidados.

Si quieres una ruta completa con progresión real de dificultad:

Úsala cuando el problema sea naturalmente recursivo. Para casos lineales simples, una versión iterativa suele ser más eficiente.

En Programación en C en 100 ejercicios resueltos y en la sección de Ejercicios C. Kindle Unlimited: Ver en Amazon.

Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.