回答編集履歴
1
見やすく編集
test
CHANGED
@@ -16,58 +16,42 @@
|
|
16
16
|
|
17
17
|
```
|
18
18
|
|
19
|
+
$argが3の時をシュミレートすると
|
19
20
|
|
21
|
+
sample(3)
|
20
22
|
|
21
|
-
|
23
|
+
は3+sample(2)を返す
|
24
|
+
|
25
|
+
では
|
26
|
+
|
27
|
+
sample(2)
|
28
|
+
|
29
|
+
は2+sample(1)を返す
|
30
|
+
|
31
|
+
最後に
|
32
|
+
|
33
|
+
sample(1)
|
34
|
+
|
35
|
+
は1を返す
|
22
36
|
|
23
37
|
|
24
38
|
|
25
|
-
|
39
|
+
つまり数学の式みたいに考えると
|
26
40
|
|
27
|
-
|
41
|
+
sample(3) = 3+sample(2)
|
28
42
|
|
29
|
-
|
43
|
+
sample(2) = 2+sample(1)
|
30
44
|
|
31
|
-
|
45
|
+
sample(1) = 1
|
32
46
|
|
33
|
-
|
47
|
+
それぞれ代入していくと
|
48
|
+
|
49
|
+
sample(3) = 6
|
50
|
+
|
51
|
+
という結果が得られるという仕組みです。
|
34
52
|
|
35
53
|
|
36
54
|
|
37
|
-
次に
|
38
|
-
|
39
|
-
$argが2の時
|
40
|
-
|
41
|
-
return($arg + sample($arg -1));
|
42
|
-
|
43
|
-
が実行される
|
44
|
-
|
45
|
-
これは
|
46
|
-
|
47
|
-
2+sample(1)
|
48
|
-
|
49
|
-
なわけですよね?
|
50
55
|
|
51
56
|
|
52
57
|
|
53
|
-
次に
|
54
|
-
|
55
|
-
$argが1の時
|
56
|
-
|
57
|
-
return(1);
|
58
|
-
|
59
|
-
が実行される。
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
これ以上sampleは再起的に呼ばれない
|
64
|
-
|
65
|
-
sample(1)は1を返す
|
66
|
-
|
67
|
-
sample(2)は2+sample(1)を返すが上行から2+sample(1)=3
|
68
|
-
|
69
|
-
sample(3)は3+sample(2)を返すが上行から3+sample(2)=6
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
で結局$argが3の時は6が得られるという仕組みです
|