Está en la página 1de 2

Eficiencia de la recursividad en la solucin de problemas La solucin de problemas computacionales, no tiene una manera especifica de realizarse.

Muchos de los problemas que pueden llegar a presentarse poseen diversas formas de resolverse, lo que cambia entre una y otra son los recursos que deben de sacrificarse para llegar a dicha solucin. Y entre estas diversas formas de resolver problemas encontraremos dos las cuales son las mas utilizadas y conocidas por las personas generalmente. Como ser el caso de los algoritmos recursivos y los iterativos. Los algoritmos iterativos son aquellos que funcionan a partir de procedimientos cclicos y los algoritmos recursivos son algoritmos que expresan la solucin de un problema en trminos de una llamada a s mismo. La llamada a s mismo se conoce como llamada recursiva o recurrente. Cabe resaltar que la recursividad es una forma elegante, simple, estructurada, modular y clara de resolver problemas complejos en pocas lneas de cdigo, por lo tanto, resulta de gran utilidad. Asimismo, un punto importante de la recursividad es que usa recursos del sistema, tales como el procesador y la pila del sistema, segn el tipo de problema en cantidades variables Existen dos tipos diferentes de recursin que se clasifican segn si la funcin se llama a s misma directa o indirectamente. Estos tipos se definen de la siguiente forma: 1) Recursin directa: Contiene un llamado a s misma de forma explcita 2) Recursin indirecta: Contiene un llamado a otra funcin que a su vez llama a la primera funcin. Es decir, realiza el llamado a s misma a travs de otra funcin. En la siguiente figura se muestran los dos tipos de recursin y sus sub-categoras.

Es importante determinar que ante un problema especfico se debe escoger entre algoritmos recursivos e iterativos. Existen criterios especficos que determinan cundo es conveniente utilizar la recursividad por motivos de eficiencia, por lo tanto, es justificable cuando: 1. Se sabe que la funcin no va a generar demasiada profundidad de llamadas recursivas. Es decir, que un problema que requiera de constantes llamados recursivos no debe solucionarse de esta forma. 2. Se sabe que la funcin no va a utilizar estructuras de datos locales demasiado grandes. Como es el caso de las listas, vectores, entre otros. 3. Cada llamada no genera, a su vez, llamadas ya resueltas en otras llamadas que se generarn o se han generado antes. 4. La solucin no se puede plantear de forma sencilla de otra manera que no sea por recursividad. Por ejemplo, algoritmos que resuelven problemas matemticos. Los algoritmos iterativos tienden a ser ms eficientes que los algoritmos recursivos segn un problema en particular, ya que poseen un orden que los hace ms eficientes. Cabe destacar que esta relacin se pudo realizar ya que los problemas planteados se podan realizar por medio de ambos tipos de algoritmos. Adems, se evidencia por medio del anlisis de tiempos de ejecucin donde claramente los algoritmos iterativos se realizan en menor tiempo que los recursivos siendo as estos ms eficientes. Y es que realmente las funciones recursivas son poco eficientes debido a dos problemas bsicos que vienen con ellas, que son: - Cada llamada a una funcin supone un gasto y adems, cada llamada guarda las variables locales definidas dentro de la funcin, por lo tanto, gasta mucha memoria. - Segundo, la recursividad usa la pila del sistema y sta es finita. Si se realizan demasiadas llamadas recursivas, puede producirse un error de desbordamiento de pila. Siempre es mejor la versin iterativa de un algoritmo, pero en ocasiones la recursividad es ms fcil de implementar y ms clara. En conclusin, podemos notar que la recursividad resulta muy poco eficiente en la mayora de los casos. Pero dependiendo de la complejidad de ciertos problemas es mejor usar la recursividad que la iteracin ya que la resolucin de los mismos se vuelve mas sencilla.

También podría gustarte