Recursividad • La recursividad es una técnica de programación elemental que permite que una función pueda llamarse asimismo desde la misma función. Se puede utilizar la recursividad como una alternativa a la iteración. La recursividad es una herramienta poderosa e importante en la resolución de problemas en programación. Una solución recursiva es normalmente menos eficiente en términos de tiempo de computadora que una solución iterativa debido a las operaciones auxiliares que llevan consigo las llamadas suplementarias a las funciones: sin embargo, en muchas circunstancias el uso de la recursión permite a los programadores especificar las soluciones naturales, más lógicas, elegantes, sencillas, que serían, en caso contrario difícil de resolver. Principios de la recursividad • La recursividad es una de las formas de control más importantes en la programación. Los procedimientos recursivos son la forma más natural de representación de muchos algoritmos.
• El concepto de recursividad está ligado, en los lenguajes de programación, al
concepto de procedimiento o función. Un procedimiento o función es recursivo cuando durante una invocación a él puede ser invocado a su vez él mismo.
• El conocimiento de los principios fundamentales de la recursividad evita evadir su utilización cuando su aplicación sea conveniente para un determinado problema.
• El uso de la recursividad es particularmente conveniente para aquellos problemas que pueden definirse de modo natural en términos de recursividad. Ventajas de la Recursividad • No es necesario definir la secuencia de pasos exacta para resolver el problema. • Soluciones simples, claras. • Soluciones elegantes. • Soluciones a problemas complejos. Desventajas de la Recursividad • Podría ser menos eficiente. • 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. • La ineficiencia inherente de algunos algoritmos recursivos. Ejemplo 1 Ejemplo 2 Ejemplo 3