¿Cuándo deberíamos considerar el uso de algoritmos recursivos al escribir un programa? Discuta en términos de ventajas y desventajas.

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.

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.

Mi filosofía es escribir cualquier programa con recursividad si es un ajuste natural. Esto generalmente significa que una solución recursiva es mucho más obvia que una iterativa, y es más difícil de implementar.

La conversión de a una solución iterativa es una optimización potencial. Dependiendo del nivel de necesidad, esto puede no ocurrir, o puede ocurrir inmediatamente.

La ventaja es que a menudo es más fácil de implementar, al menos para problemas donde es apropiado. Si no es más fácil, ¿por qué estás forzando la recursividad?

La desventaja es que ocupa espacio en la pila y puede ser menos eficiente debido a la sobrecarga de tonos de las llamadas a métodos. Algunos idiomas pueden optimizar el problema del espacio de pila para la recursión de cola.

Como con muchas cosas, la compensación entre una reserva de código y la optimización depende de su caso de uso. A veces, el código óptimo es crucial, a veces el código más fácil es más útil.

Suena como una pregunta de tarea. No creo que debas esperar que otros hagan tu trabajo por ti.

Principalmente al atravesar estructuras de datos recursivas como árboles

More Interesting

¿Cuál es tu problema de programación dinámica favorito?

Como desarrollador web full stack con 1 año de experiencia, ¿sería beneficioso para mí aprender algoritmo y estructura de datos?

¿Qué problema exacto está resolviendo el 'comercio conversacional'?

¿Cuáles son las aplicaciones en tiempo real del algoritmo de Dijkstra?

¿En qué tipos de gráfico DFS y BFS producirán el mismo árbol (misma fuente) independientemente de la secuencia de visitas de los vecinos?

¿A los programadores les gustan las funciones recursivas? ¿Por qué o por qué no?

¿Por qué el hashing geométrico es más eficiente que usar una matriz indexada de las coordenadas de los puntos característicos?

¿Cómo estudiar efectivamente estructuras de datos y algoritmos? ¿Simplemente memorizo ​​cómo funcionan

Cómo implementar un código C para la eliminación de un nodo de una lista vinculada considerando todos los casos de prueba

Cómo hacer un método que devuelva un arrayList que ha ordenado el número de Strings en cada fila del archivo

¿Es necesario tener datos estacionarios para aplicar algún tipo de algoritmo de aprendizaje automático?

¿Cuál es la mejor práctica y estructura de datos para la aplicación de autocompletado multilingüe?

Quiero desarrollar un software profesional, ¿qué debo hacer?

¿El problema de las reinas N tiene al menos una solución por cada N> 3?

¿Se puede demostrar que es imposible volver a un entero inicial mayor que uno si aplica un algoritmo de multiplicar por tres y agregar uno cuando es impar y dividir por dos si es par?