teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2020/05/17 15:41

投稿

tiitoi
tiitoi

スコア21960

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

2

修正

2020/05/17 15:41

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,2 +1,4 @@
1
1
  limit_min_num を変化させないと、再帰関数は無限に呼び出されることにならないでしょうか。
2
+ 再帰関数を呼び出していったとき、`len(tri_node.tri_list) > limit_min_num` でない場合がいつか現れないと、再帰関数が無限ループします。
3
+
2
- 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
4
+ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。

1

修正

2020/05/17 15:12

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,9 +1,2 @@
1
1
  limit_min_num を変化させないと、再帰関数は無限に呼び出されることにならないでしょうか。
2
- ※ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
2
+ ※ 実装の正しさについては検証していません。カーネルが落ちるという問題についてです。
3
-
4
- ```diff
5
- - obj_subdiv(tri_node.child_list1, limit_min_num)
6
- - obj_subdiv(tri_node.child_list2, limit_min_num)
7
- + obj_subdiv(tri_node.child_list1, limit_min_num + 1)
8
- + obj_subdiv(tri_node.child_list2, limit_min_num + 1)
9
- ```