回答編集履歴

1

コード追記

2020/03/26 18:36

投稿

SHOMI
SHOMI

スコア4079

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