Algunos algoritmos son mucho más fáciles de definir en forma recursiva.
Las desventajas son que:
1. Por lo general, se necesita soporte para la recursividad en el idioma y / o el sistema operativo. He escrito programas recursivos en un lenguaje de máquina bastante primitivo, un buen ejercicio.
- ¿Vale la pena tomar el curso de Algoritmos de Udacity?
- ¿De dónde debería comenzar a aprender el algoritmo? ¿Debería unirme a uno de los MOOC disponibles o leer libros como 'Introducción a los algoritmos'?
- ¿Cómo 'entiende' el hardware de la computadora los dígitos binarios?
- ¿Cuál es el algoritmo más optimizado para encontrar la suma de la diferencia absoluta de cada par distinto en una matriz entera?
- El tiempo supuestamente imaginario puede modelarse significativamente en física. Entonces, ¿puede existir una complejidad de tiempo imaginaria para un algoritmo?
2. Los algoritmos recursivos pueden ser mucho menos eficientes que otras formas de realizar la misma tarea. He visto una función recursiva para calcular los números de Fibonacci, que requiere más llamadas de subrutina que el número calculado.
El tiempo y el espacio requeridos son una función exponencial de la entrada. Una variante en serie fácil es mucho más eficiente.
3. Pequeños errores al escribir el código pueden dar como resultado un bucle sin fin que asigna almacenamiento. La recuperación de esta condición a menudo es incómoda y puede requerir un reinicio. Las ayudas de depuración en tiempo de ejecución pueden fallar al ejecutarse debido a la falta de espacio, o la información puede perderse en el reinicio.
Respondí esta pregunta por razones egoístas. Si esta pregunta es un intento de evitar hacer el trabajo propio en un problema de tarea, le pido disculpas, le he incitado a engañarse a sí mismo.