Страницы

Поиск по вопросам

понедельник, 27 мая 2019 г.

Помогите разобрать код на Си

#include void CntTo3(int); void CntTo2(int); void CntTo1(int); int main() { int n; CntTo3(3); return 0; } void CntTo3(int p) { CntTo2(p-1); printf("%d
",p); } void CntTo2(int p) { CntTo1(p-1); printf("%d
",p); } void CntTo1(int p) { printf("%d
",p); }
После компиляции, показывается ответ как -
1 2 3
Получается, чтобы вывести 1 в функции CntTo3, нужно выполнить функцию CntTo2, которая будет равняться 2, ну и CntTo1 уже выводит без вычислений 3. Я правильно понял? Если да, то почему в main() определяется CntTo3(3) и зачем переменная n?


Ответ

int main() { int n; CntTo3(3); return 0; } void CntTo3(int p) { CntTo2(p-1); printf("%d
",p); } void CntTo2(int p) { CntTo1(p-1); printf("%d
",p); } void CntTo1(int p) { printf("%d
",p); }
Давайте просто подставлять код вместо вызова:
int main() { int n; CntTo2(2); printf("%d
",3); return 0; } void CntTo2(int p) { CntTo1(p-1); printf("%d
",p); } void CntTo1(int p) { printf("%d
",p); }
Следующая подстановка:
int main() { int n; CntTo1(1); printf("%d
",2); printf("%d
",3); return 0; } void CntTo1(int p) { printf("%d
",p); }
И последняя:
int main() { int n; printf("%d
",1); printf("%d
",2); printf("%d
",3); return 0; }
Так понятнее?
Переменная n нигде не работает (кстати, компилятор должен предупредить об этом).

Комментариев нет:

Отправить комментарий