मैं एक सवाल के बारे में sys.setrecursionlimit()अजगर अधिकतम प्रत्यावर्तन, sys.setrecursionlimit के बारे में प्रश्न()
अजगर दस्तावेज़ से यह समारोह:
अजगर दुभाषिया की अधिकतम गहराई सेट करें सीमित करने के लिए ढेर। यह सीमा सी स्टैक के ओवरफ्लो और पायथन को दुर्घटनाग्रस्त होने से अनंत रिकर्सन को रोकती है। उच्चतम संभव सीमा मंच-निर्भर है। जब उपयोगकर्ता के पास एक प्रोग्राम होता है जिसके लिए गहरी रिकर्सन और एक प्लेटफॉर्म जो उच्च सीमा का समर्थन करता है, तो उपयोगकर्ता को सीमा अधिक निर्धारित करने की आवश्यकता हो सकती है। यह देखभाल के साथ किया जाना चाहिए, क्योंकि बहुत अधिक सीमा एक दुर्घटना का कारण बन सकती है।
यहाँ मेरी सवाल यह है:
def rec(N):
if N==0:
return 1
else:
return rec(N-1);
अब के 100 करने के लिए अधिकतम प्रत्यावर्तन सेट कर सकते हैं:
के इस बेकार पुनरावर्ती क्रिया करते हैं अगर मैं rec(99)
कोशिश
sys.setrecursionlimit(100)
(100 रिकर्सिव कॉल), मुझे मिलता है:
RuntimeError: maximum recursion depth exceeded
रिक (99) की गणना करने के लिए मुझे 105
पर रिकर्सन सीमा सेट करने की आवश्यकता है ऐसा क्यों है?
Thx, मुझे लगता है कि मुझे परिभाषा को अधिक सावधानीपूर्वक पढ़ना चाहिए और फ़ंक्शन के नाम को नहीं देखना चाहिए –