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.
Desafío
FácilCrea 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
nque representa el número para el cual se calculará el factorial
Tu programa debe:
- Crear una función recursiva llamada
factorialque tome un parámetro entero y devuelva un entero - La función debe implementar el caso base: si
nes menor o igual a 1, devolver 1 - La función debe implementar el paso recursivo: devolver
nmultiplicado por el factorial den-1 - En la función principal, leer el valor de entrada
- Llamar a la función factorial con el valor de entrada
- 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;
}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
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea