回答編集履歴
1
見やすく編集
answer
CHANGED
@@ -7,31 +7,22 @@
|
|
7
7
|
}
|
8
8
|
|
9
9
|
```
|
10
|
-
|
11
10
|
$argが3の時をシュミレートすると
|
11
|
+
sample(3)
|
12
|
+
は3+sample(2)を返す
|
13
|
+
では
|
14
|
+
sample(2)
|
15
|
+
は2+sample(1)を返す
|
16
|
+
最後に
|
17
|
+
sample(1)
|
18
|
+
は1を返す
|
12
19
|
|
20
|
+
つまり数学の式みたいに考えると
|
21
|
+
sample(3) = 3+sample(2)
|
13
|
-
|
22
|
+
sample(2) = 2+sample(1)
|
14
|
-
が実行される
|
15
|
-
これは
|
16
|
-
|
23
|
+
sample(1) = 1
|
17
|
-
|
24
|
+
それぞれ代入していくと
|
25
|
+
sample(3) = 6
|
26
|
+
という結果が得られるという仕組みです。
|
18
27
|
|
19
|
-
次に
|
20
|
-
$argが2の時
|
21
|
-
return($arg + sample($arg -1));
|
22
|
-
が実行される
|
23
|
-
これは
|
24
|
-
2+sample(1)
|
25
|
-
なわけですよね?
|
26
28
|
|
27
|
-
次に
|
28
|
-
$argが1の時
|
29
|
-
return(1);
|
30
|
-
が実行される。
|
31
|
-
|
32
|
-
これ以上sampleは再起的に呼ばれない
|
33
|
-
sample(1)は1を返す
|
34
|
-
sample(2)は2+sample(1)を返すが上行から2+sample(1)=3
|
35
|
-
sample(3)は3+sample(2)を返すが上行から3+sample(2)=6
|
36
|
-
|
37
|
-
で結局$argが3の時は6が得られるという仕組みです
|