2015-11-17 13 views
7

今日のクラスでの再帰とスタックオーバーフローに関する興味深い話題と、Pythonで最大再帰深度を増やす方法があるかどうか疑問に思っていましたか?再帰を使用して、nの階乗を見つけるための迅速な機能を書いた:どのようにしてPythonの最大再帰深度を増やすことができますか?

def factorial(n): 
    if n == 1: 
     return n 
    else: 
     return n * factorial(n-1) 

それは階乗と(994)の対応が、階乗ない(995)ことができます。与えられたエラーは次のとおりです。

RuntimeError: maximum recursion depth exceeded in comparison 

明らかに高い階乗を引数と陰謀のために、反復的に見つけることができますが、最大の再帰の深さを大きくすることができますか?ここでは、あまりにも多くの再帰を回避する標準的な方法は、メモ化を使用することを

+1

https://docs.python.org/2/library/sys.html#sys.setrecursionlimit – freakish

+5

注意。 –

+2

いいえ、ここには憎しみはありません。私たちは皆他人を助けるためにここにいる。私たちがあなたを憎むことを意味するものではありません。将来はすべて最高です。 –

答えて

8
import sys 

sys.setrecursionlimit(2000) 
5
import sys 

iMaxStackSize = 5000 
sys.setrecursionlimit(iMaxStackSize)