Zusammenfassung der Ressource
RECURSIVIDAD
- CONCEPTO
- Se llama recursividad a un proceso mediante el que una función se llama a sí misma de
forma repetida, hasta que se satisface alguna determinada condición. El proceso se
utiliza para computaciones repetidas en las que cada acción se determina mediante un
resultado anterior. Se pueden escribir de esta forma muchos problemas iterativos.
- CARACTERISTICAS
- La recursividad debe
terminar alguna vez: caso
base
- Cada nueva formulación
estamos más cerca del caso final
(o base).
- Las funciones recursivas son útiles para
“recorrer” estructuras anidadas, como
árboles.
- TIPOS
- SIMPLE
- Aquella en cuya
definición sólo aparece
una llamada recursiva.
Se puede transformar
con facilidad en
algoritmos iterativos ,
ejemplo el factorial
- Ej: Par o Impar:int par( int
nump ){if(nump==0)
return(1);return(
impar(nump-1));} int impar( int
numi ){if(numi==0)
return(0);return( par(numi-1));}
- ANIDADA
- En algunos de los arg. de la
llamada recursiva hay una
nueva llamada a sí misma
- int Ack( int n, int m ) /*
ej: Ackerman */{if(n==0
) return(m+1);else
if(m==0)
return(Ack(n-1,1));return(Ack(n-1,
Ack(n,m-1)));}
- MULTIPLE
- Es cuando hay más de
una llamada a sí
misma dentro del
cuerpo de la función,
resultando más difícil
de hacer de forma
iterativa
- int Fib( int n ) /* ej:
Fibonacci */{if(n<=1)
return(1);return(Fib(n-1)
+ Fib(n-2));}
- ventajas
- Soluciones simples, claras.
- Soluciones elegantes.
- Soluciones a problemas complejos.
- Desventajas
- Sobrecarga asociada con las llamadas a subalgoritmos
- Una simple llamada puede generar un gran número de llamadas
recursivas. (Fact(n) genera n llamadas recursivas)
- El valor de la recursividad reside en el hecho de que se puede
usar para resolver problemas sin fácil solución iterativa.