Recursión
Desliza para mostrar el menú
Recursión en programación se refiere a la técnica en la que una función se llama a sí misma para resolver una instancia más pequeña del mismo problema. Es una forma poderosa y elegante de resolver problemas que pueden descomponerse en subproblemas más pequeños del mismo tipo.
Las funciones recursivas suelen constar de dos componentes:
-
Caso base: Define la condición de terminación para la función recursiva. Cuando se alcanza el caso base, la función deja de llamarse y retorna un valor específico. Esto es necesario para evitar la recursión infinita.
-
Caso recursivo: Define la lógica para descomponer el problema en subproblemas más pequeños y llamar a la función recursivamente con entradas reducidas. El caso recursivo permite que la función avance hacia el caso base.
El factorial de un número n se define de la siguiente manera:
n! = n*(n-1)*(n-2)*..*2*1 = n*(n-1)!
main.cpp
12345678910111213141516171819#include <iostream> // Function to calculate factorial int factorial(int n) { // Base case: factorial of 0 or 1 is 1 if (n == 0 || n == 1) return 1; // Recursive case: multiply n with factorial of (n-1) std::cout << "Recursive Case: " << n << " * factorial(" << n - 1 << ")" << std::endl; return n * factorial(n - 1); } int main() { // Call the function std::cout << factorial(5) << std::endl; }
Caso base: El caso base ocurre cuando la entrada n es igual a 0 o 1. En este caso, el factorial se define como 1. El caso base garantiza que la recursión termine y previene la recursión infinita.
Caso recursivo: El caso recursivo es la lógica para calcular el factorial de n cuando n es mayor que 1. Consiste en llamar recursivamente a la función factorial con n - 1 como argumento y multiplicar el resultado por n. Esto reduce el problema a un subproblema más pequeño al calcular el factorial de un número menor.
Llamar a la función con argumento igual a 5. Aquí está el proceso paso a paso:
factorial(5)llama afactorial(4)y multiplica el resultado por 5.factorial(4)llama afactorial(3)y multiplica el resultado por 4.factorial(3)llama afactorial(2)y multiplica el resultado por 3.factorial(2)llama afactorial(1)y multiplica el resultado por 2.factorial(1)es el caso base y retorna 1.- la multiplicación continúa hacia arriba en la cadena, resultando en el factorial final de
5que es igual a120.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla