Хвостовая рекурсия считается более эффективной, чем обычная рекурсия, благодаря оптимизации, которая позволяет уменьшить затраты на операции над стеком. 4
Когда рекурсивный вызов является последней операцией перед выходом из вызывающей функции, сохранение контекста уже не имеет значения — ни параметры, ни локальные переменные уже использоваться не будут, а адрес возврата уже находится в стеке. 2 Поэтому в такой ситуации вместо полноценного рекурсивного вызова функции можно просто заменить значения параметров в стеке и передать управление на точку входа. 2
Кроме того, хороший компилятор может обнаружить хвостовую рекурсию и применить эту оптимизацию для улучшения производительности рекурсивного алгоритма. 4
Таким образом, при любой глубине рекурсии стек не будет переполнен. 2