¿Es la recursividad de cola mejor que la recursión hacia adelante para el rendimiento en erlang?
¿O el compilador de erlang optimiza la recursión hacia adelante también?
Es decir, ¿hay alguna razón para utilizar la recursividad de cola en lugar de la recursión directa?
En mi opinión, la recursión hacia adelante se ve más bonita.Recursividad de cola frente a recursión hacia adelante en Erlang
Respuesta
La recursividad de cola suele ser mejor porque utiliza menos memoria. Solo traes lo que necesitas a la próxima llamada, lo que minimiza la utilización de la memoria en la pila. Además, cuando se optimiza el código recursivo de la cola, se descartan los retornos de función que no son necesarios, lo que lo hará un poco más rápido en algunos casos.
Por ejemplo, si el valor de retorno de una función es la llamada a otra función, no es necesario mantener la función intermediaria en la pila. Entonces el código salta directamente a la persona que llama desde la función interna.
La recursividad sin cola está optimizada para la recursión final en algunos casos por el compilador de Erlang, pero no cuente con ella. Haga un buen hábito para codificar las funciones recursivas de la cola cada vez que pueda.
La recursividad de la cola y la recursión directa son conceptos totalmente diferentes. Vea esto discussion.
Es posible escribir una recursión hacia adelante que es recursiva de cola y, por lo tanto, optimizada. También es posible escribir una recursión hacia adelante que no sea recursiva de cola: en este caso, no se optimizará, es decir, consumirá espacio de pila.
- 1. pliegues frente a la recursividad en Erlang
- 2. Cola-recursividad en Oz
- 3. Recursividad de cola en C++
- 4. redirección hacia adelante o
- 5. recursión de cola en Haskell
- 6. ¿Java soporta recursividad de cola?
- 7. Spring MVC, hacia adelante
- 8. recursión de cola con Groovy
- 9. Entender el secreto hacia adelante
- 10. LINQ: mirando hacia adelante condición
- 11. Corrección de errores hacia adelante en .NET
- 12. erlang vs jvm (scala) rendimiento de recursión
- 13. Encadenamiento hacia adelante y encadenamiento hacia atrás en Java
- 14. pila frente a la cola?
- 15. ¿Defina una función hacia adelante en Lua?
- 16. Administrar hacia adelante y hacia atrás en Richfaces
- 17. java.lang.StackOverflowError en la recursión de cola clojure
- 18. ¿De qué manera las declaraciones de casos mango Erlang mezclan con la recursión de cola
- 19. ¿PHP optimiza la recursividad de cola?
- 20. ¿Esta función usa recursividad de cola?
- 21. recursión de cola y de Fibonacci
- 22. Git: Cómo moverse hacia atrás y hacia adelante entre confirmaciones
- 23. Desplazar una animación jQuery hacia atrás y hacia adelante
- 24. F # tubería hacia adelante para convertir de int a bigint
- 25. Ordenar ISO 8601 fechas hacia adelante o hacia atrás
- 26. Encabezados hacia adelante para contenedores STL
- 27. recursividad SQL sin recursividad
- 28. ¿Cómo difiere la recursión primitiva de la recursividad "normal"?
- 29. geocodificación hacia adelante desde el iPhone
- 30. declaran hacia adelante función estática C++