回答編集履歴

3

修正

2020/05/17 15:41

投稿

tiitoi
tiitoi

スコア21956

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

修正

2020/05/17 15:41

投稿

tiitoi
tiitoi

スコア21956

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

修正

2020/05/17 15:12

投稿

tiitoi
tiitoi

スコア21956

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
- ```