50 likes | 265 Views
2.2 Procedimientos recursivos. Si un subprograma se llama a si mismo se repite su ejecución un cierto numero de veces.
E N D
Si un subprograma se llama a si mismo se repite su ejecución un cierto numero de veces. Los procesos recursivos suelen ocupar más memoria y tardar un poquito más que los iterativosporque cuando el compilador llama a una subrutina guarda todas las variables locales. for while
La recursividad y la iteración (ejecución en bucle) están muy relacionadas, cualquier acción que pueda realizarse con la recursividad puede realizarse con iteración y viceversa. Tanto la iteración como la recursión se basan en una estructura de control: - La iteración utiliza una estructura repetitiva - La recursión utiliza una estructura de selección. La iteración y la recursión implican ambas repetición: - La iteración utiliza explícitamente una estructura repetitiva - La recursión consume la repetición mediante llamadas repetidas. La iteración y la recursión implican cada una un test mientras que la recursión termina cuando se reconoce un caso base o la condición de salida se alcanza. Ver ejemplos multItera.javamultRecu.java
Ventajas de la Recursión • Soluciones simples, claras • Soluciones elegantes. • Soluciones a problemas complejos. • Desventajas de la Recursión: INEFICIENCIA • Sobrecarga asociada con las llamadas a subalgoritmos • • Una simple llamada puede generar un gran numero de llamadas recursivas. • (Fact(n) genera n llamadas recursivas) • • ¿La claridad compensa la sobrecarga? • • 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. • La recursividad se debe usar cuando sea realmente necesaria, es decir, cuando no exista una solución iterativa simple.