回答編集履歴
3
修正
test
CHANGED
@@ -5,3 +5,33 @@
|
|
5
5
|
|
6
6
|
|
7
7
|
※ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
## 追記
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
例えば、階乗を計算する再帰関数を作るなら以下のようになります。
|
16
|
+
|
17
|
+
今の質問者さんのコードには、`n == 0` の場合は再帰をやめるという処理がない状態です。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
```python
|
22
|
+
|
23
|
+
def f(n):
|
24
|
+
|
25
|
+
if n == 0: # 再帰関数を終了する条件
|
26
|
+
|
27
|
+
return 1
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
return n * f(n - 1)
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
print(f(5))
|
36
|
+
|
37
|
+
```
|
2
修正
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
1
|
limit_min_num を変化させないと、再帰関数は無限に呼び出されることにならないでしょうか。
|
2
2
|
|
3
|
+
再帰関数を呼び出していったとき、`len(tri_node.tri_list) > limit_min_num` でない場合がいつか現れないと、再帰関数が無限ループします。
|
4
|
+
|
5
|
+
|
6
|
+
|
3
|
-
※ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
|
7
|
+
※ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
|
1
修正
test
CHANGED
@@ -1,17 +1,3 @@
|
|
1
1
|
limit_min_num を変化させないと、再帰関数は無限に呼び出されることにならないでしょうか。
|
2
2
|
|
3
3
|
※ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
```diff
|
8
|
-
|
9
|
-
- obj_subdiv(tri_node.child_list1, limit_min_num)
|
10
|
-
|
11
|
-
- obj_subdiv(tri_node.child_list2, limit_min_num)
|
12
|
-
|
13
|
-
+ obj_subdiv(tri_node.child_list1, limit_min_num + 1)
|
14
|
-
|
15
|
-
+ obj_subdiv(tri_node.child_list2, limit_min_num + 1)
|
16
|
-
|
17
|
-
```
|