Я читаю хвостовую рекурсию, как показано ниже
Хвостовая рекурсия относится к рекурсивному вызову в последней строке.Хвостовую рекурсию можно устранить механически, заключив тело в цикл while и заменив рекурсивный вызов одним присваиванием на аргумент функции.
Например,
void print(Iterator start, Iterator end, ostream& out=cout) {
if(start == end)
return;
out << *start++ << endl;
print(start, end, out);
}
преобразуется в итеративный по вышеуказанной спецификации как
void print(Iterator start, Iterator end, ostream& out=cout) {
while(true) {
if(start == end)
return;
out << *start++ << endl;
}
}
В вышеприведенном отрывке упоминается, что «замена рекурсивного вызова одним присваиванием на аргумент функции, но в данном примере у нас не было никакого присваивания?
Может ли кто-нибудь объяснить и привести пример для приведенного выше объяснения о том, как преобразовать рекурсивную функцию в итеративную функцию?