La recursividad es una técnica de programación donde una función se llama a sí misma para resolver un problema.
Cada vez que la función se llama, se trabaja sobre un problema más pequeño o más simple que el original, hasta llegar a una situación tan sencilla que ya no necesita seguir llamándose: el caso base.
Podemos pensar en la recursividad como un efecto dominó: cada llamada a la función empuja a la siguiente, y cuando llegamos al final (el caso base), las funciones comienzan a resolverse en orden inverso.
Funcion ContarRegresivamente(n)
Si n > 0 Entonces
Escribir n;
ContarRegresivamente(n-1);
Sino
Escribir "¡Fin!";
FinSi
FinFuncion
Proceso Principal
ContarRegresivamente(5);
FinProceso
Cuando usamos recursividad, las llamadas se apilan en la memoria (como platos uno sobre otro).
Cuando llegamos al caso base, el programa comienza a desapilar (resolviendo cada llamada anterior en orden inverso).
El factorial de un número se define así:
0! = 1n! = n × (n-1)! Funcion factorial <- CalcularFactorial(n)
Definir factorial Como Entero;
Si n = 0 Entonces
factorial <- 1;
Sino
factorial <- n * CalcularFactorial(n-1);
FinSi
FinFuncion
Proceso Principal
Definir numero Como Entero;
Escribir "Ingrese un número:";
Leer numero;
Escribir "El factorial es: ", CalcularFactorial(numero);
FinProceso
La recursividad es útil cuando:
Siempre analiza si la recursividad realmente simplifica el problema antes de usarla.