Sei sulla pagina 1di 16

Algoritmos

Recursivos
Inga. Rosalba Peralta
Recursividad

La recursividad se puede utilizar como alternativa a la iteracin


aunque normalmente esta es menos eficiente en trminos de
tiempo de computadora.
La recursividad es una herramienta potente de la programacin
que en muchos casos puede proporcionar algoritmos naturales,
cortos y sencillos que en caso contrario, con la iteracin serian,
difciles de resolver.
La recursin no es mas que una propiedad que posee un mtodo
de llamarse a s mismo, directa o indirectamente.
Algoritmos Recursivos

Como puede un mtodo resolver un problema llamndose a


si mismo? La clave esta en que el mtodo se llama a si
mismo dentro de un contexto diferente, que generalmente es
mas simple que el anterior.
Para que un algoritmo recursivo sea correcto no debe generar
una secuencia infinita de llamadas sobre s mismo.
Mtodo Recursivo

Implementar un algoritmo recursivo que reciba un entero lo


imprima y vaya disminuyendo en 1 el entero a imprimir.
Con el fin de no crear mtodos infinitos, se crea un caso base
en donde se produzca la salida del mtodo para el caso mas
simple o cuya solucin este dada por defecto.
Caso Base
Escribir un mtodo recursivo que calcule el factorial de un
nmero n.

n = 0,1 return 1 *caso base


f(n) =
n > 1 n(n-1)
Ejemplo
Ejercicio

Definir el mtodo recursivo que resuelva la serie de Fibonacci.


0, 1, 1, 2, 3, 5, 8 ,13, 21 ...
Recursividad Indirecta

La recursividad indirecta se produce cuando un mtodo llama


a otro, que eventualmente terminar llamando de nuevo al
primer mtodo.
Ejemplo
Mostrar por pantalla el alfabeto, utilizando recursin
indirecta.
Recursin vs Iteracin

Tanto la iteracin como la recursin implican repeticin: la


iteracin utiliza explcitamente una estructura repetitiva
mientras que la recursin consigue la repeticin mediante
llamadas repetidas al mtodo.
Las dos requieren una condicin de salida. La iteracin
termina cuando la condicin del bucle no se cumple, mientras
que la recursin termina cuando se reconoce un caso base o
se alcanza la condicin de parada.
Recursin vs Iteracin

La recursin tiene muchas desventajas. Se invoca


repetidamente al mecanismo de llamadas a mtodos y, en
consecuencia, se necesita un tiempo suplementario para
realizar cada llamada.
Por qu elegir la recursin?

La razn fundamental es que existen numerosos problemas


complejos que poseen naturaleza recursiva y, en
consecuencia, son ms fciles de implementar con algoritmos
de este tipo.
Consejo de programacin

Se ha de evitar utilizar recursividad en situaciones de


rendimiento crtico o exigencia de altas prestaciones en
tiempo y en memoria, ya que las llamadas recursivas
emplean tiempo y consumen memoria adicional. No es
conveniente el uso de una llamada recursiva para sustituir un
simple bucle.
Ejemplo Fibonacci
Iterativo

Recursivo
Directrices en la toma de decisin
iteracin/recursin
1. Considrese una solucin recursiva slo cuando una solucin iterativa
sencilla no sea posible.
2. Utilcese una solucin recursiva slo cuando la ejecucin y eficiencia de la
memoria de la solucin est dentro de lmites aceptables, considerando las
limitaciones del sistema.
3. Si son posibles las dos soluciones, iterativa y recursiva, la solucin recursiva
siempre requerir ms tiempo y espacio debido a las llamadas adicionales a
los mtodos.
4. En ciertos problemas, la recursin conduce a soluciones que son mucho ms
fciles de leer y de comprender que su alternativa iterativa. En estos casos,
los beneficios obtenidos con la claridad de la solucin suelen compensar el
coste extra (en tiempo y memoria) de la ejecucin de un programa
recursivo.

Potrebbero piacerti anche