Разбираем хвостовую рекурсию в C++: как отличать хвостовой вызов от обычного (последнее действие —
return результата рекурсивного вызова), зачем нужен аккумулятор
acc и нейтральный элемент (
0 для суммы,
1 для произведения), почему хвостовая форма сама по себе не гарантирует отсутствие переполнения стека, что такое TCO (Tail Call Optimization) и почему компилятор может её не применить. Покажем, как вручную переписать хвостовую рекурсию в
while/
for, и закрепим всё на мини-практике: утилита TextTools для суммы цифр в
std::string с реализацией и через цикл, и через хвостовую рекурсию.