Можно создать дубликат:
What is tail-recursion?Что такое оптимизация хвостовой рекурсии?
Что хвост оптимизация рекурсии?
Можно создать дубликат:
What is tail-recursion?Что такое оптимизация хвостовой рекурсии?
Что хвост оптимизация рекурсии?
a звонки b вызовы c вызовы d.
в конце у вас есть хвосты:
d возвращается к гр возвращается б возвращается в. если все это ничего не делает (например, в рекурсии, где это фактически вызовы, вызывает вызовы a), тогда вы можете оптимизировать это ... ... в d возвращает a.
В JavaScript: The Good Parts Крокфорд говорит: «Некоторые языки предлагают оптимизацию хвостовой рекурсии. Это означает, что если функция возвращает результат рекурсивного вызова, то вызов заменяется циклом, который может значительно ускорить процесс».
Рекурсия хвоста не означает, что вы включаете рекурсивный вызов в цикл.
Это означает, что фрейм стека больше не нужен в точке рекурсивного вызова и поэтому может быть устранен. Это может произойти, если повторный вызов является последним в методе, и если возвращаемое значение рекурсивного вызова является возвращаемым значением текущего метода. Исключая текущий стек стека, рекурсивные вызовы могут идти на произвольную глубину без ошибок переполнения стека и с существенной экономией ресурсов.
Эта оптимизация обычно выполняется компилятором/интерпретатором, а не программистом.
Вы прочитали ответы на http://stackoverflow.com/questions/33923/what-is-tail-recursion? –