Menu
Coddy logo textTech

Factorial recursivo

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy. Lección 46 de 56.

El factorial de un número es un ejemplo perfecto para demostrar la recursión en acción. El factorial de n (escrito como n!) es el producto de todos los números enteros positivos del 1 al n. Por ejemplo, 5! = 5 × 4 × 3 × 2 × 1 = 120.

Lo que hace que el factorial sea ideal para la recursión es que puede definirse en términos de sí mismo: n! = n × (n-1)!. Esto significa que, para calcular 5!, multiplicas 5 por 4!, y para calcular 4!, multiplicas 4 por 3!, y así sucesivamente.

Así es como se ve una función factorial recursiva:

int factorial(int n) {
    if (n <= 1) {           // Caso base: 0! y 1! ambos equivalen a 1
        return 1;
    }
    
    return n * factorial(n - 1);  // Paso recursivo: n! = n × (n-1)!
}

El caso base detiene la recursión cuando n alcanza 1 o 0 y devuelve 1. El paso recursivo multiplica el número actual por el factorial del siguiente número menor. Cuando llamas a factorial(4), calcula 4 × 3 × 2 × 1 realizando llamadas sucesivas hasta alcanzar el caso base, y después multiplica todos los resultados a medida que las llamadas regresan.

challenge icon

Desafío

Fácil

Crea un programa que implemente una función factorial recursiva y la utilice para calcular factoriales para diferentes valores de entrada. Este desafío pondrá a prueba tu comprensión de cómo funciona la recursión, haciendo que una función se llame a sí misma con parámetros modificados hasta alcanzar un caso base.

Se proporcionará la siguiente entrada:

  • Un entero n que representa el número cuyo factorial se calculará

Tu programa debe:

  1. Crear una función recursiva llamada factorial que reciba un parámetro entero y devuelva un entero
  2. La función debe implementar el caso base: si n es menor o igual que 1, devolver 1
  3. La función debe implementar el paso recursivo: devolver n multiplicado por el factorial de n-1
  4. En la función principal, leer el valor de entrada
  5. Llamar a la función factorial con el valor de entrada
  6. Imprimir el resultado usando el formato especificado

Usa el siguiente formato exacto de salida:

Factorial of [n] is [result]

Recuerda que la función factorial debe llamarse a sí misma con un valor menor cada vez, acercándose al caso base con cada llamada recursiva. El caso base evita la recursión infinita al detenerse cuando n alcanza 1 o 0. El paso recursivo multiplica el número actual por el factorial del siguiente número menor, construyendo el resultado final a medida que las llamadas de la función devuelven sus valores.

Pruébalo tú mismo

#include <iostream>
using namespace std;

// TODO: Escribe tu función factorial aquí

int main() {
    // Leer entrada
    int n;
    cin >> n;
    
    // TODO: Llamar a la función factorial y almacenar el resultado
    
    // Mostrar el resultado
    cout << "Factorial of " << n << " is " << result << endl;
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C++ online