0Pricing
C Academy · Lección

Problemas recursivos clásicos

Factorial y Fibonacci

Problemas recursivos clásicos es una lección gratuita de C Academy en CoddyKit. Esta es la lección 2 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.

Problemas clásicos

Algunos problemas se adaptan naturalmente a la recursividad. Aprender los casos clásicos le proporciona patrones que puede reutilizar.

En esta lección veremos factoriales, Fibonacci, suma de dígitos, máximo común divisor e inversión de la salida.

Factorial

El factorial de n es n multiplicado por el factorial de n menos 1, donde 1! es igual a 1.

Esta es la recursividad de manual: un caso base claro y una llamada recursiva.

#include <stdio.h>

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

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

Números de Fibonacci

Cada número de Fibonacci es la suma de los dos números anteriores. La definición recursiva necesita dos casos base: fib(0)=0 y fib(1)=1.

Esta versión realiza dos llamadas en cada paso.

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

Ejecutar Fibonacci

Aquí tiene el programa completo. fib(10) debería imprimir 55.

Tenga en cuenta que esta versión ingenua repite trabajo, por lo que es lenta para valores grandes de n.

#include <stdio.h>

int fib(int n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

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

Suma de dígitos

Para sumar los dígitos de un número, obtenga el último dígito con n % 10 y aplique recursividad al resto con n / 10.

El caso base se alcanza cuando n llega a 0.

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

La suma de dígitos en acción

Para 1234, la suma es 1+2+3+4 = 10. Confirmémoslo con un programa completo.

#include <stdio.h>

int digit_sum(int n) {
    if (n == 0) return 0;
    return (n % 10) + digit_sum(n / 10);
}

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

Máximo común divisor

El algoritmo de Euclides se adapta naturalmente a la recursividad. El MCD de a y b equivale al MCD de b y a % b.

Cuando b se convierte en 0, a es la respuesta.

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

Programa completo del MCD

El MCD de 48 y 18 es 6. Este programa lo imprime.

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int main(void) {
    printf("%d\n", gcd(48, 18));
    return 0;
}

Invertir un número

La recursividad también puede controlar la salida. Al imprimir el último dígito después de la llamada recursiva, invierte de forma natural el orden del procesamiento.

Esta función auxiliar imprime cada dígito de un número en su propia línea mediante recursividad.

#include <stdio.h>

void print_digits(int n) {
    if (n == 0) return;
    print_digits(n / 10);
    printf("%d ", n % 10);
}

int main(void) {
    print_digits(729);
    printf("\n");
    return 0;
}

Función potencia

Elevar una base a un exponente también es un proceso recursivo: base^exp equivale a base multiplicada por base^(exp-1).

El caso base es el exponente 0, que devuelve 1.

long power(int base, int exp) {
    if (exp == 0) return 1;
    return base * power(base, exp - 1);
}

Patrones que reutilizará

Observe la estructura compartida: compruebe un caso base y, después, combine el paso actual con el resultado de una llamada más pequeña.

Cuando detecte este patrón, muchos problemas se convierten en funciones recursivas breves.

Comprobación rápida

Elija los casos base correctos.

Resumen

El factorial, Fibonacci, la suma de dígitos, el MCD y la potencia comparten un mismo patrón recursivo: gestionar el caso base y, después, combinar el valor actual con un subproblema más pequeño.

Estas plantillas se pueden aplicar a muchas otras tareas.

Preguntas frecuentes

¿La lección «Problemas recursivos clásicos» es gratis?

Sí — el texto completo de «Problemas recursivos clásicos» 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 «Problemas recursivos clásicos»?

Factorial y Fibonacci 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 2 de 4.

¿Cuánto tiempo toma la lección «Problemas recursivos clásicos»?

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