каждый раз, когда вы вызываете fun_reverse
в вашей функции fun_reverse
, он не печатает введенный символ сразу, просто запрашивает ввод другого, складывает запросы (и создает столько локальных переменных, которые хранят каждыйchar) до достижения EOF
.
Когда встречается EOF
, fun_reverse
возвращается без повторного вызова fun_reverse
, завершая цепочку, заставляя всех вызывающих абонентов возвращаться и в конечном итоге печатать результаты.
Тот факт, что вызовы были наложены из-за рекурсии, имеет эффект обращения вспять, потому что их разбор производится наоборот.
Этот метод часто используется для преобразования числа в строкубез какого-либо дополнительного буфера.Преобразование числа в строку сначала дает «неправильный» конец числа, поэтому вам нужно буферизовать числа, пока цифры не будут полностью обработаны.Алгоритм, аналогичный приведенному выше, позволяет сохранять цифры и распечатывать их в читаемом порядке.