回答編集履歴

2

説明の図を追加

2020/10/14 04:52

投稿

takutakuya
takutakuya

スコア979

test CHANGED
@@ -61,3 +61,47 @@
61
61
  マトリョーシカ人形に例えてみましたが、いかがでしょうか?
62
62
 
63
63
  これで理解が深まれば幸いです。
64
+
65
+
66
+
67
+ ### 追記
68
+
69
+ マトリョーシカ人形、撃沈。。。
70
+
71
+ 気を取り直して、図にしてみました。
72
+
73
+
74
+
75
+ ![再帰関数の図](a8b362cb92aab5c359eac6254bff7847.png)
76
+
77
+
78
+
79
+ 式にすると、
80
+
81
+ ```
82
+
83
+ dict_4 = dict_a3 + dict_b3
84
+
85
+
86
+
87
+ dict_a3 = dict_aa2 + dict_ab2
88
+
89
+ dict_b3 = dict_ba2 + dict_bb2
90
+
91
+
92
+
93
+ dict_aa2 = dict_aaa1 + dict_aab1
94
+
95
+ dict_ab2 = dict_aba1 + dict_abb1
96
+
97
+ dict_ba2 = dict_baa1 + dict_bab1
98
+
99
+ dict_bb2 = dict_bba1 + dict_bbb1
100
+
101
+ ```
102
+
103
+ こんなイメージでしょうか?
104
+
105
+
106
+
107
+ 分かりやすくなったか、自信はないですが、さらに理解が深まることに寄与できれば幸いです。

1

制限をかけなかった場合について追記

2020/10/14 04:52

投稿

takutakuya
takutakuya

スコア979

test CHANGED
@@ -44,6 +44,20 @@
44
44
 
45
45
 
46
46
 
47
+ 呼び出す回数に制限をかけないと、永遠と関数を呼び出し続けるので、プログラムの実行が終わらずに、最終的にはエラー(`RecursionError`)となります。
48
+
49
+
50
+
51
+ マトリョーシカ人形でも、中に入れる人形の数を決めないと、100体、1000体と中に人形を入れ続けないといけないので、大変なことになります。
52
+
53
+
54
+
55
+ そのため、再帰的な関数を定義する場合、呼び出す回数に制限をかけることが重要になります。
56
+
57
+
58
+
59
+
60
+
47
61
  マトリョーシカ人形に例えてみましたが、いかがでしょうか?
48
62
 
49
63
  これで理解が深まれば幸いです。