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 recursividad en acción. El factorial de n (escrito como n!) es el producto de todos los números enteros positivos desde 1 hasta n. Por ejemplo, 5! = 5 × 4 × 3 × 2 × 1 = 120.

Lo que hace que el factorial sea ideal para la recursividad 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! son ambos iguales a 1
        return 1;
    }
    
    return n * factorial(n - 1);  // Paso recursivo: n! = n × (n-1)!
}

El caso base detiene la recursión cuando n llega a 1 o 0, devolviendo 1. El paso recursivo multiplica el número actual por el factorial del siguiente número más pequeño. Cuando llamas a factorial(4), calcula 4 × 3 × 2 × 1 realizando llamadas sucesivas hasta que alcanza el caso base, luego multiplica todos los resultados a medida que las llamadas retornan.

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 recursividad al hacer que una función se llame a sí misma con parámetros modificados hasta que alcance un caso base.

Se proporcionará la siguiente entrada:

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

Tu programa debe:

  1. Crear una función recursiva llamada factorial que tome un parámetro entero y devuelva un entero
  2. La función debe implementar el caso base: si n es menor o igual a 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 utilizando el formato especificado

Utiliza exactamente el siguiente formato 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 llega a 1 o 0. El paso recursivo multiplica el número actual por el factorial del siguiente número más pequeño, construyendo el resultado final a medida que las llamadas a la función devuelven sus valores.

Hoja de referencia

El factorial de n (n!) es el producto de todos los números enteros positivos desde 1 hasta n. Se puede definir de forma recursiva como: n! = n × (n-1)!

Función factorial recursiva:

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

El caso base detiene la recursión cuando n llega a 1 o 0. El paso recursivo multiplica el número actual por el factorial del siguiente número más pequeño.

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