Recursión:
Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos
de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o
recurrente.
Generalmente, si la primera llamada al subprograma se plantea sobre un problema de
tamaño u orden N, cada nueva ejecución recurrente del mismo se planteará sobre
problemas, de igual naturaleza que el original, pero de un tamaño menor que N. De esta
forma, al ir reduciendo progresivamente la complejidad del problema que resolver, llegará
un momento en que su resolución sea más o menos trivial (o, al menos, suficientemente
manejable como para resolverlo de forma no recursiva). En esa situación diremos que
estamos ante un caso base de la recursividad.
Las claves para construir un subprograma recurrente son:
Cada llamada recurrente se debería definir sobre un problema de menor complejidad
(algo más fácil de resolver).
Ha de existir al menos un caso base para evitar que la recurrencia sea infinita.
LA RECURSIÓN PUEDE PRESENTARSE DE 2 MANERAS
Directa: El programa o subprograma se llama directamente a sí mismo.
Indirecta: el subprograma llama a otro subprograma, y éste, en algún momento, llama
nuevamente al primero.
EJEMPLOS
1. Proponga MÉTODO un que reciba como parámetros un vector y lo imprima sin
utilizar ciclos
2. Proponga MÉTODO un que reciba como parámetros un vector y lo imprima de
forma invertida
3. Realizar un MÉTODO que reciba como parámetro una lista enlazada doble y la
imprima sin utilizar ciclos.
4. Proponga un MÉTODO que reciba como parámetro un lista enlazada simple y la
imprima de forma invertida
FUNCION FACTORIAL:
FUNCIÓN FOBONACCI
FUNCION ACKERMAN:
En teoría de la computación, función de Ackermann es una función matemática recursiva
encontrada en 1926 por Wilhelm Ackermann, tiene un crecimiento extremadamente
rápido, de interés para la ciencia computacional teórica y la teoría de la computabilidad.