La ricorsione della coda è migliore della ricorsione in avanti per la perfomance in erlang?
Oppure il compilatore di erlang ottimizza anche la ricorsione in avanti?
Voglio dire, ci sono dei motivi per usare la ricorsione in coda invece della ricorsione in avanti?
A mio parere, la ricorsione in avanti sembra più carina.Ricorsione della coda e ricorsione diretta in Erlang
risposta
La ricorsione della coda è solitamente migliore perché utilizza meno memoria. Porta solo ciò di cui hai bisogno alla prossima chiamata, il che minimizza l'utilizzo della memoria nello stack. Inoltre, quando il codice ricorsivo della coda è ottimizzato, i ritorni di funzione che non sono necessari vengono gettati via, il che lo renderà leggermente più veloce in alcuni casi.
Ad esempio, se il valore di ritorno di una funzione è la chiamata a un'altra funzione, non è necessario mantenere la funzione intermedia in pila. Quindi il codice torna direttamente al chiamante dalla funzione interna.
La ricorsione non a coda è ottimizzata per la ricorsione in coda in alcuni casi dal compilatore Erlang, ma non contare su di essa. Prendi una buona abitudine per codificare le funzioni ricorsive della coda ogni volta che puoi.
La ricorsione della coda e la ricorsione in avanti sono concetti completamente diversi. Vedere questo discussion.
È possibile scrivere una ricorsione in avanti che è ricorsiva della coda e quindi ottimizzata. È anche possibile scrivere una ricorsione in avanti che non sia ricorsiva in coda: in questo caso, non sarà ottimizzata, cioè consumerà spazio nello stack.
- 1. convertire la ricorsione in "ricorsione della coda"
- 2. Ricorsione della coda in clojure
- 3. Ricorsione della coda ed eccezioni in F #
- 4. Scala supporta l'ottimizzazione della ricorsione in coda?
- 5. Javascript i ++ troppa ricorsione, i + 1 ok in coda ricorsione
- 6. Questa funzione utilizza la ricorsione della coda?
- 7. Folds contro la ricorsione in Erlang
- 8. Fare ricorsione in coda in C++
- 9. bytecode lento con la ricorsione in coda
- 10. Conversione in loop ... ricorsione ricorsione
- 11. java.lang.StackOverFlowError in clojure ricorsione in coda
- 12. Perché si dovrebbe utilizzare l'iterazione invece della ricorsione della coda?
- 13. Coefficiente binomiale con ricorsione della coda in LISP
- 14. L'utilizzo di un sacco di ricorsione in coda in Erlang lo rallenta?
- 15. Come fare la ricorsione in fn anonima, senza ricorsione in coda
- 16. Ricorsione di coda clojure con fattori primi
- 17. Utilizzo della ricorsione in C#
- 18. F # differenza di prestazioni tra ricorsione coda e libreria Seq
- 19. Perché c'è una differenza di arrotondamento tra la mia ricorsione normale e l'esempio di ricorsione della coda?
- 20. metodo statico e ricorsione?
- 21. Ricorsione Python all'interno della classe
- 22. java.lang.StackOverflowError a causa della ricorsione
- 23. Devo evitare la ricorsione della coda in Prolog e in generale?
- 24. Come camminare un AST con la coda ricorsione in Clojure
- 25. "Necessari" usi della ricorsione in lingue imperative
- 26. Gestione della ricorsione infinita XSL in Saxon
- 27. Rimozione della ricorsione sinistra in DCG - Prolog
- 28. Ricorsione su Swift Sliceable
- 29. QuickSort stima della profondità di ricorsione
- 30. Ricorsione in istruzioni preparate