0

Python 2.7.3で次のプログラムを実行するにはどうすればよいですか

import sys
sys.setrecursionlimit(2 ** 20)
def f(x):
    if (x==0): return 0
    else: return f(x-1)+1
print f(200000)

このコードは、Ubuntu でセグメンテーション違反を受け取ります。

4

1 に答える 1

2

Python インタープリターがスタック スペースを使い果たします。同じ状況にある他のプロセスと同様に、オペレーティング システムによって強制終了されます。

OS スタック サイズの制限を増やしてみてください ( ulimit -c)。

より良いアプローチは、コードを書き直して、これほど深い再帰を必要としないようにすることです (特定の例は簡単に反復に変換できます)。

于 2013-04-08T14:35:27.260 に答える