teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記

2020/03/26 18:36

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,1 +1,19 @@
1
- `out 1`の出力後の次の実行位置は、呼び出し元の`wand(n - 1);`の次の行であるためです。
1
+ `out 1`の出力後の次の実行位置は、呼び出し元の`wand(n - 1);`の次の行であるためです。
2
+ 再帰呼び出しを以下のように展開してみれば理解できると思います。
3
+ ```C
4
+ wand(int n) // n = 3
5
+ {
6
+ printf("in %d\n", n); // n = 3
7
+ wand(int n) // n = 2
8
+ {
9
+ printf("in %d\n", n); // n = 2
10
+ wand(int n) // n = 1
11
+ {
12
+ printf("in %d\n", n); // n = 1
13
+ printf("out %d\n", n); // n = 1
14
+ }
15
+ printf("out %d\n", n); // n = 2
16
+ }
17
+ printf("out %d\n", n); // n = 3
18
+ }
19
+ ```