viernes, 16 de abril de 2010

Algoritmos Recursivos

Un Algoritmo recursivo es aquel que durante su ejecución se llama o invoca directa o indirectamente a sí mismo. Esta invocación deberá de depender de al menos de una condición que cumpla el papel de ruptura para que el algoritmo no se ejecute en una iteración infinita lo cual podría ocasionar que el computador sufra de un desbordamiento de pila (Stact Overflow).

Un algoritmo recursivo deberá de constar de lo siguiente.

1- Al menos un caso base, es decir, que no vuelva a invocarse y que se ejecuta cuando se cumple cierta condición,
2- El caso general que es el que vuelve a invocar al algoritmo con un caso más pequeño que el caso base.

Ventas de la Recursividad
• Reducción notable del tamaño del algoritmo.
• A través de una recursividad puede resolver los problemas de una manera sencilla, mientras que con algoritmos iterativos la solución es muy grande y compleja.
• Se usa para dividir problemas complejos en subproblemas, existe una frase que dice “divide y vencerás”

Desventajas de la recursividad
• Es confusa y difícil de depurar.
• Es Peligrosa, ya que podría ocasionar que el algoritmo recursivo deje sin memoria al computador si no es bien controlado.

Un ejemplo comun de un algoritmo recursivo es el Fibonacci

static int fib (int n)
{
if ((n == 0) (n == 1))
return 1;
else
return fib(n-1) + fib(n-2);
}




Conclusión:
La recursividad es buena para la resolución de muchos problemas, pero deberá de considerarse aspectos como:
Deberá de hacerse un mayor análisis del problema para resolverlo de una forma recursiva.
Si el algoritmo está mal diseñado se podría producir resultados erróneos.

1 comentario: