2015-11-17 11 views
7

प्रत्यावर्तन और आज कक्षा में ढेर अतिप्रवाह की दिलचस्प विषय है और मैंने सोचा अजगर में अधिकतम प्रत्यावर्तन गहराई बढ़ाने की किसी भी तरह से नहीं है तो क्या होगा? प्रत्यावर्तन का उपयोग कर n के भाज्य को खोजने के लिए एक त्वरित समारोह लिखा है:आप पायथन में अधिकतम रिकर्सन गहराई कैसे बढ़ा सकते हैं?

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

यह भाज्य (994) के साथ सामना कर सकते हैं लेकिन भाज्य नहीं (995)। दिए गए त्रुटि है:

RuntimeError: maximum recursion depth exceeded in comparison 

जाहिर है एक उच्च भाज्य iteratively पाया जा सकता है लेकिन, तर्क और साज़िश के लिए, अधिकतम प्रत्यावर्तन गहराई बढ़ाया जा सकता है?

+1

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

+5

ध्यान दें कि यहां बहुत ज्यादा प्रत्यावर्तन से बचने का मानक तरीका Memoization उपयोग करने के लिए है। –

+2

नहीं, यहां कोई नफरत नहीं है। हम सभी दूसरों की मदद करने के लिए यहां हैं। एक डुप्ली के रूप में बंद करने का मतलब यह नहीं है कि हम * आपको नफरत करते हैं। भविष्य में सबसे अच्छा –

उत्तर

8
import sys 

sys.setrecursionlimit(2000) 
5
import sys 

iMaxStackSize = 5000 
sys.setrecursionlimit(iMaxStackSize) 
संबंधित मुद्दे