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

質問編集履歴

7

コードリンク修正

2018/10/10 08:59

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ###まとめ
2
2
  動くか動かないかの切り分けは完全には出来ていませんが特にPythonのVer差でもOS差でも無いような気がします。
3
3
 
4
- [GitHub 修正後のコード](https://github.com/opyon/public/tree/master/Python3/qa/qa151136)
4
+ [GitHub 修正後のコードまとめ](https://github.com/opyon/public/tree/master/Python3/qa/qa151136)
5
5
 
6
6
 
7
7
  動かなかった環境は以下のとおりです。
@@ -43,7 +43,7 @@
43
43
  **追記補足:**
44
44
   但し質問時の元のコードのままで@デコレータ追記だけでは動きませんでした。
45
45
   @LouiS0616さん回答のように関数を分割すると動きました。
46
-  [GitHub 修正後のコード](https://github.com/opyon/public/tree/master/Python3/qa/qa151136)
46
+  [GitHub 修正後のコード qa151136_ok2.py](https://github.com/opyon/public/blob/master/Python3/qa/qa151136/qa151136_ok2.py)
47
47
   
48
48
 
49
49
  ```

6

補足追記

2018/10/10 08:59

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -39,6 +39,13 @@
39
39
 
40
40
  どちらのコードも試してみて動作確認出来ました。
41
41
  個人的にはimportと@デコレータ追記だけなのでこちらが実用的かとは思います。
42
+
43
+ **追記補足:**
44
+  但し質問時の元のコードのままで@デコレータ追記だけでは動きませんでした。
45
+  @LouiS0616さん回答のように関数を分割すると動きました。
46
+  [GitHub 修正後のコード](https://github.com/opyon/public/tree/master/Python3/qa/qa151136)
47
+  
48
+
42
49
  ```
43
50
  from functools import lru_cache
44
51
  # @lru_cache(maxsize=None)

5

修正後のコードリンク追記

2018/10/10 08:56

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,9 @@
1
1
  ###まとめ
2
2
  動くか動かないかの切り分けは完全には出来ていませんが特にPythonのVer差でもOS差でも無いような気がします。
3
3
 
4
+ [GitHub 修正後のコード](https://github.com/opyon/public/tree/master/Python3/qa/qa151136)
5
+
6
+
4
7
  動かなかった環境は以下のとおりです。
5
8
  全てNG
6
9
  ・OS:Windows10 Home 64bit

4

コマンドラインでもNG、画像追加

2018/10/10 08:52

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,7 @@
6
6
  ・OS:Windows10 Home 64bit
7
7
  ・Python:3.6.6 , 3.7.0
8
8
  ・IDE:Eclipse4.8 , Jupyter Notebook
9
+ ・[コマンドライン](https://gyazo.com/f9497b61400ede6f5970de88107533e5)
9
10
 
10
11
  その他コメントより
11
12
  NG

3

誤記訂正とimport例追記

2018/10/10 07:50

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -34,8 +34,16 @@
34
34
  functools.lru_cache でメモ化するとトラブルが少ないです。
35
35
 
36
36
  どちらのコードも試してみて動作確認出来ました。
37
- 個人的にはimportと@アノテション追記だけなのでこちらが実用的かとは思います。
37
+ 個人的にはimportと@デコレ追記だけなのでこちらが実用的かとは思います。
38
+ ```
39
+ from functools import lru_cache
40
+ # @lru_cache(maxsize=None)
41
+ @lru_cache(maxsize=8)
42
+ def fibo(n):
43
+ ```
38
44
 
45
+
46
+
39
47
  Pythonで再帰階層が深くなる場合には気をつけるという教訓にもなりました。
40
48
  回答やコメントなどでの情報提供ありがとうございました。
41
49
 

2

まとめ

2018/10/10 07:29

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,46 @@
1
+ ###まとめ
2
+ 動くか動かないかの切り分けは完全には出来ていませんが特にPythonのVer差でもOS差でも無いような気がします。
3
+
4
+ 動かなかった環境は以下のとおりです。
5
+ 全てNG
6
+ ・OS:Windows10 Home 64bit
7
+ ・Python:3.6.6 , 3.7.0
8
+ ・IDE:Eclipse4.8 , Jupyter Notebook
9
+
10
+ その他コメントより
11
+ NG
12
+ ・3.4.3 on Windows8.1/64bit
13
+
14
+ OK
15
+ ・3.7.0
16
+
17
+ ###
18
+ @hayataka2049さんの回答より
19
+ [Python: What is the hard recursion limit for Linux, Mac and Windows? - Stack Overflow](https://stackoverflow.com/questions/2917210/python-what-is-the-hard-recursion-limit-for-linux-mac-and-windows)
20
+ [Windows版Pythonの再帰呼び出し制限 - kusano_kの日記](http://d.hatena.ne.jp/kusano_k/20130824/1377366249)
21
+ > sys.setrecursionlimit(1024*1024)
22
+ で再帰呼び出しの深さ制限を変更できるけど、Pythonのスタックサイズが足りないらしく、Pythonが不正終了する。Windowsの場合、新しく作成されるスタックのサイズを
23
+ thread.stack_size(128*1024*1024)
24
+ で変更できる。
25
+
26
+ ###
27
+ @LouiS0616さん回答より
28
+ [@functools.lru_cache(maxsize=128, typed=False)](https://docs.python.jp/3/library/functools.html#functools.lru_cache)
29
+ > 関数をメモ化用の呼び出し可能オブジェクトでラップし、最近の呼び出し最大 maxsize 回まで保存するするデコレータです。高価な関数や I/O に束縛されている関数を定期的に同じ引数で呼び出すときに、時間を節約できます。
30
+
31
+  
32
+
33
+ > フィボナッチ数列絡みの問題を再帰で実装する際は、
34
+ functools.lru_cache でメモ化するとトラブルが少ないです。
35
+
36
+ どちらのコードも試してみて動作確認出来ました。
37
+ 個人的にはimportと@アノテーション追記だけなのでこちらが実用的かとは思います。
38
+
39
+ Pythonで再帰階層が深くなる場合には気をつけるという教訓にもなりました。
40
+ 回答やコメントなどでの情報提供ありがとうございました。
41
+
42
+ ###
43
+
1
44
  ###知りたいこと
2
45
  **エラーも結果も出力されない原因が知りたいです。**
3
46
  原因が分かる方いらっしゃればご教示お願いします。

1

実行環境追記

2018/10/10 07:20

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,10 @@
8
8
  上記問題を解くのに下記プログラムで`N=1000`を入力すると正解が出力されるはずなのですが、
9
9
  関数の再帰処理を使い入力値を`N=823`以上にすると結果もエラーも表示されずに終了してしまいます。
10
10
 
11
+ ###実行環境
12
+ Windows10
13
+ Python3.7.0
14
+
11
15
  ```Python3
12
16
  import sys
13
17
  import math