Рекурсия хвоста лучше, чем передовая рекурсия для выступления в erlang?
Или erlang-компилятор также оптимизирует прямую рекурсию?
Я имею в виду, есть ли причины использовать хвостовую рекурсию вместо прямой рекурсии?
На мой взгляд, рекурсия вперед выглядит более симпатичной.Хвост рекурсии против прямой рекурсии в Эрланге
ответ
Хвост рекурсии обычно лучше, потому что он использует меньше памяти. Вы только приносите то, что вам нужно, к следующему вызову, что минимизирует использование памяти в стеке. Кроме того, когда оптимизируется хвостовой рекурсивный код, отбрасываются возвращаемые функции, которые не нужны, что в некоторых случаях будет немного быстрее.
Например, если возвращаемое значение функции является вызовом другой функции, нет необходимости хранить промежуточную функцию в стеке. Таким образом, код возвращается к вызывающей стороне непосредственно из внутренней функции.
Рекурсия без хвоста оптимизирована для рекурсии хвоста в некоторых случаях с помощью компилятора Erlang, но не рассчитывает на него. Сделайте хорошую привычку кодировать хвостовые рекурсивные функции, когда сможете.
Рекурсия хвоста и рекурсия вперед - это совершенно разные понятия. См. Это discussion.
Можно написать рекурсивную рекурсию и, таким образом, оптимизировать ее. Также возможно написать рекурсию вперед, которая не является хвостовой рекурсивной: в этом случае она не будет оптимизирована, т. Е. Будет потреблять пространство стека.
- 1. хвостовая рекурсия против прямой рекурсии
- 2. Хвост рекурсии в C?
- 3. Хвост рекурсии в erlang
- 4. Хвост рекурсии в Haskell
- 5. какой хвост рекурсии?
- 6. Хвост рекурсии vs List.fold_left
- 7. лязг бесконечный хвост оптимизации рекурсии
- 8. Итерация против эффективности рекурсии
- 9. Может ли OCaml проверить хвост рекурсии
- 10. Могут ли логические операторы используют хвост рекурсии
- 11. Складки против рекурсии в Erlang
- 12. Tail оптимизация рекурсии и рекурсии в Java
- 13. Против Тип данных Вне рекурсии
- 14. Looping против рекурсии с F #
- 15. Рекурсия хвоста против примитивной рекурсии
- 16. понимание рекурсии против циклов ruby
- 17. Использует ли много хвостовой рекурсии в Эрланге замедление?
- 18. Вопрос о рекурсии рекурсии
- 19. Ошибка рекурсии Python без рекурсии?
- 20. Лень и хвост рекурсии в Haskell, почему это грохот?
- 21. хвост рекурсии Фибоначчи в Ruby - ошибка теста устройства
- 22. Использования продолжения для преобразования двоичной рекурсии в хвост рекурсию
- 23. Разделение рекурсии в мельчайших зернах рекурсии
- 24. LISP- Улучшение рекурсии хвоста рекурсии в функции циклического сдвига списка
- 25. Преобразование рекурсии в рекурсию хвоста?
- 26. Clojure хвост вызов рекурсии с переменной функцией аргумента
- 27. хвоста рекурсии в Озе
- 28. Эффективность рекурсии против итерации для экспонентов
- 29. Меньшие методы против метода четкой рекурсии
- 30. Итерация против рекурсии для простой обработки?