// both() reads integers and prints the numbers in their original order
// and then in reverse order.
// effects: reads input, produces output
void both(void) {
int n = read_int();
if(n != READ_INT_FAIL) {
printf("%d\n", n);
both();
printf("%d\n", n);
}
}
int main(void) {
both();
}
Таким образом, этот код считывает целые числа и печатает число в исходном порядке и в обратном порядке.read_int () - это способ, которым мои учителя реализовали ввод.В любом случае, скажем, что ввод - 1, 2, 3, 4, 5. Ожидаемый вывод - 1, 2, 3, 4, 5, 5, 4, 3, 2, 1 (очевидно, это были бы новые строки вместо запятых, но яне хотел тратить вертикальное пространство).
Итак, мой вопрос: как это работает?
Из того, что я могу проследить в своей голове, both()
вызывается по main, и он продолжает вызываться до того, как второй printf()
будет доступен, пока не закончится весь код, потому что оба не будут вызваныкогда вводится недопустимое значение (любая произвольная буква после 5).
Как это работает?