रिकर्सिव फ़ंक्शन ऐसे कार्य होते हैं जो किसी अन्य विधि के भीतर एक विधि को कॉल करते हैं। हालांकि, अनंत रिकर्सन स्टैक आकार त्रुटि का कारण बनता है। कई अनुरोधों के लंबित होने के कारण स्टैक आकार त्रुटि उत्पन्न होती है। फ़ंक्शन को कॉल करते समय यह समस्या उत्पन्न होती है। इस पर विचार करके, यह आलेख बताता है कि अधिकतम कॉल स्टैक आकार जावास्क्रिप्ट में त्रुटि से अधिक है। इसके अलावा, त्रुटि को हल करने के लिए समाधान भी प्रदान किया जाता है।
लेख हमें इस प्रकार कार्य करता है:
- अधिकतम कॉल स्टैक आकार जावास्क्रिप्ट में त्रुटि से अधिक हो गया
- अधिकतम कॉल स्टैक आकार को हल करने के लिए यदि शर्त का उपयोग त्रुटि से अधिक हो गया है
- अधिकतम कॉल स्टैक आकार को पार करने में त्रुटि को हल करने के लिए लूप के लिए उपयोग करना।
अधिकतम कॉल स्टैक आकार जावास्क्रिप्ट में त्रुटि से अधिक हो गया
स्टैक आकार पार हो गया त्रुटि तब होती है जब उपयोगकर्ता पुनरावर्ती फ़ंक्शन को कॉल करता है। इस प्रकार की त्रुटि किसी विधि को बार-बार करने के कारण होती है। fun_user() फ़ंक्शन के अंदर एक पुनरावर्ती कॉल के रूप में उपयोग किया जाता है fun_user() जावास्क्रिप्ट में कंसोल विंडो में एक त्रुटि उत्पन्न करने के लिए।
कोड
कंसोल.लॉग ( 'अधिकतम कॉल स्टैक आकार से अधिक' ) ;
fun_user ( ) ;
समारोह fun_user ( )
{
fun_user ( ) ;
}
इस कोड में, 'अधिकतम कॉल स्टैक आकार त्रुटि से अधिक हो गया' एक विधि को कॉल करके उत्पन्न होता है 'fun_user ()' समारोह के अंदर।
कोड त्रुटि प्रदर्शित करता है: 'रेंज एरर: अधिकतम कॉल स्टैक आकार पार हो गया।'
इस त्रुटि को हल करने के कई तरीके हैं, जैसे पाश के लिए तथा सशर्त बयान , जिसका उपयोग फ़ंक्शन कॉल को सीमित करने के लिए किया जा सकता है।
समाधान 1: अधिकतम कॉल स्टैक आकार को हल करने के लिए यदि शर्त का उपयोग त्रुटि से अधिक हो गया है
त्रुटि को हल करने के लिए, जावास्क्रिप्ट में स्टैक आकार को प्रतिबंधित करने के लिए if शर्त लागू की जाती है। उदाहरण के लिए, कोड नीचे दिया गया है।
कोड
था मैं = 1 ;fun_user ( मैं ) ;
समारोह fun_user ( मैं ) {
यदि ( मैं < = 10 )
{
कंसोल.लॉग ( 'जावास्क्रिप्ट में आपका स्वागत है' ) ;
मैं =मैं+ 1 ;
fun_user ( मैं ) ;
} }
कोड का विवरण इस प्रकार है:
- सबसे पहले, एक चर 'मैं' मान 1 के साथ प्रारंभ किया गया है।
- इसके बाद, fun_user() विधि चर पारित करके नियोजित किया जाता है 'मैं'।
- इस फ़ंक्शन में, यदि ऐसी स्थिति लागू की जाती है जो पुनरावृत्ति को प्रतिबंधित करती है 10 .
- अंत में, संदेश 'जावास्क्रिप्ट में आपका स्वागत है' का उपयोग करके प्रदर्शित किया जाता है 'कंसोल.लॉग ()' तरीका।
उत्पादन
समाधान 2: अधिकतम कॉल स्टैक आकार से अधिक त्रुटि को हल करने के लिए लूप का उपयोग करना
त्रुटि को हल करने के लिए, जावास्क्रिप्ट में पुनरावृत्तियों को सीमित करने के लिए लूप के लिए उपयोग किया जाता है। उदाहरण के लिए, कोड नीचे दिया गया है।
कोड
होने देना आउटपुट = 0 ;के लिये ( होने देना मैं = 5 ; मैं > 0 ; मैं-- )
{
आउटपुट + = जोड़ें ( 1 , 1 ) ;
}
समारोह जोड़ें ( ए, बी ) {
वापसी ए + बी;
}
कंसोल.लॉग ( उत्पादन ) ;
इस कोड में:
- चर 'उत्पादन' 0 के मान के साथ प्रारंभ किया गया है।
- उसके बाद, लूप के लिए पांच पुनरावृत्तियों को करने के लिए उपयोग किया जाता है। इस लूप में, जोड़ें() विधि को मान 1 पास करके कहा जाता है।
- विधि जोड़ें() दो चरों का योग लौटाता है एक तथा बी .
- अंत में, लकड़ी का लट्ठा() कंसोल विंडो में आउटपुट प्रदर्शित करने के लिए विधि कार्यरत है।
उत्पादन
आउटपुट रिटर्न '10' जावास्क्रिप्ट में अधिकतम कॉल स्टैक आकार की त्रुटि को हल करके।
निष्कर्ष
पुनरावर्ती कार्यों की अनंत कॉल के रूप में होता है 'अधिकतम कॉल स्टैक आकार त्रुटि से अधिक हो गया' जावास्क्रिप्ट में। यह आलेख इस प्रकार की त्रुटि उत्पन्न करने के कारणों की व्याख्या करता है। बाद में, दो समाधान, जिनमें शामिल हैं 'पाश के लिए' तथा 'सशर्त बयान' त्रुटि को हल करने के लिए उपयोग किया जाता है। इसलिए, इन समाधानों को नियोजित करके कॉलिंग फ़ंक्शन प्रतिबंधित हैं।