viernes, 16 de abril de 2010

Algoritmos Recursivos


Se dice que un método es recursivo si contiene llamadas o
Invocaciones a sí mismo.
Un método recursivo tendría este aspecto:
… metodoRecursivo (…){
……
metodoRecursivo (…);
……
}
Esto implica que una llamada al método recursivo puede generar una o
más invocaciones al mismo método, que a su vez genera otras
invocaciones, y así sucesivamente.

Siempre hay que asegurar que existe una condición de salida, es decir,
si se cumple esa condición, estaremos en el caso base, donde no se
producen llamadas recursivas.
Ya que la solución recursiva tiene un coste de tiempo y memoria mayor
que la iterativa. Es decir, los programas recursivos en general son
menos eficientes. Podríamos utilizar los siguientes consejos:
Los algoritmos que por naturaleza son recursivos, y donde la solución iterativa es complicada y debe manejarse explícitamente una pila para enumerar las llamadas recursivas, deben resolverse por métodos recursivos.
Cuando haya una solución obvia por iteración al problema, debe evitarse la recursividad.

El backtraking o “vuelta atrás” es una técnica algorítmica de resolución
general de problemas mediante una búsqueda sistemática de
soluciones.
Se descompone la tarea a realizar en tareas parciales de posibles
soluciones, y estas tareas parciales a su vez se descompondrán en
más tareas, en caso de que una tarea no conduzca a una solución se
tendrá que hacer vuelta atrás guardando los puntos de elección para
poder volver a ellos cuando no se alcance una solución.

Pienso que la experiencia es un factor importante al momento de programar decidir cuándo utilizar algoritmos recursivos o iterativos no es algo que deba tomarse a la ligera porque es algo que afectara positiva o negativamente al comportamiento de nuestros programas. La recursividad es quizás uno de los temas más ambiguos que y oscuros que eh recibido en cursos de programación. Sin embargo puede ser una herramienta potente si se sabe aprovechar.

Por ultimo dejo este video acerca de la resolucion de un problema simple con un algoritmo recursivo.



Bibliografía
http://www.slideshare.net/demogorgon/algoritmos-recursivos
http://es.wikipedia.org/wiki/Algoritmo_recursivo
http://www.uniandes.edu.co/la_universidad/Informatica.php
http://www.youtube.com/watch?v=FVkZzdZxEks

1 comentario: