अनुशंसित, 2020

संपादक की पसंद

रिकर्सन और इटरेशन के बीच अंतर

पुनरावृत्ति और पुनरावृत्ति दोनों बार-बार निर्देशों के सेट को निष्पादित करते हैं। पुनरावृत्ति तब होती है जब किसी फ़ंक्शन में कोई स्टेटमेंट बार-बार कॉल करता है। नियंत्रण तब होता है जब एक लूप बार-बार निष्पादित होता है जब तक कि नियंत्रित करने वाली स्थिति झूठी न हो जाए। पुनरावृत्ति और पुनरावृत्ति के बीच प्राथमिक अंतर यह है कि एक पुनरावृत्ति एक प्रक्रिया है, हमेशा एक फ़ंक्शन पर लागू होती है। पुनरावृति निर्देशों के सेट पर लागू होती है जिसे हम बार-बार निष्पादित करना चाहते हैं।

तुलना चार्ट

तुलना के लिए आधारप्रत्यावर्तनयात्रा
बुनियादीफ़ंक्शन के किसी निकाय में कथन फ़ंक्शन को स्वयं कहता है।निर्देशों के सेट को बार-बार निष्पादित करने की अनुमति देता है।
स्वरूपपुनरावर्ती कार्य में, केवल समाप्ति की स्थिति (बेस केस) निर्दिष्ट है।Iteration में इनिशियलाइज़ेशन, कंडीशन, लूप के भीतर स्टेटमेंट का निष्पादन और कंट्रोल चर (इन्क्रीमेंट्स एंड डिक्रीमेंट्स) शामिल हैं।
समाप्तिफ़ंक्शन के शरीर में एक सशर्त विवरण शामिल किया जाता है ताकि फ़ंक्शन को पुनरावृत्ति कॉल के बिना वापस जाने के लिए मजबूर किया जा सके।पुनरावृति कथन को बार-बार निष्पादित किया जाता है जब तक कि एक निश्चित स्थिति तक नहीं पहुंच जाता है।
शर्तयदि फ़ंक्शन कुछ स्थिति (बेस केस) कहलाता है, तो यह अनंत पुनरावृत्ति की ओर ले जाता है।यदि पुनरावृति कथन में नियंत्रण की स्थिति कभी झूठी नहीं होती है, तो यह अनंत पुनरावृत्ति की ओर ले जाती है।
अनंत पुनरावृत्तिअनंत पुनरावृत्ति सिस्टम को क्रैश कर सकती है।अनंत लूप बार-बार सीपीयू चक्रों का उपयोग करता है।
आवेदन किया हैरिकर्सियन को हमेशा फ़ंक्शन के लिए लागू किया जाता है।पुनरावृत्ति बयान बयानों या "छोरों" पर लागू होती है।
ढेरस्टैक का उपयोग नए स्थानीय चर और मापदंडों के सेट को स्टोर करने के लिए किया जाता है, जो हर बार फ़ंक्शन को कहते हैं।स्टैक का उपयोग नहीं करता है।
भूमि के ऊपरपुनरावृत्ति बार-बार फ़ंक्शन कॉल के ओवरहेड के पास है।दोहराया फ़ंक्शन कॉल का कोई ओवरहेड नहीं।
गतिनिष्पादन में धीमा।निष्पादन में तेज।
कोड का आकाररिकर्सन कोड के आकार को कम करता है।Iteration कोड को लंबा बनाता है।

रिकर्सन की परिभाषा

C ++ एक फ़ंक्शन को अपने कोड के भीतर कॉल करने की अनुमति देता है। इसका मतलब है कि फंक्शन की परिभाषा में एक फंक्शन कॉल है। कभी-कभी इसे " परिपत्र परिभाषा " भी कहा जाता है। फ़ंक्शन द्वारा उपयोग किए जाने वाले स्थानीय चर और मापदंडों के सेट को हर बार बनाया जाता है जब फ़ंक्शन स्वयं कॉल करता है और स्टैक के शीर्ष पर संग्रहीत होता है। लेकिन, हर बार जब कोई फ़ंक्शन स्वयं कॉल करता है, तो यह उस फ़ंक्शन की एक नई प्रतिलिपि नहीं बनाता है। पुनरावर्ती फ़ंक्शन कोड के आकार को महत्वपूर्ण रूप से कम नहीं करता है और स्मृति उपयोग में भी सुधार नहीं करता है, लेकिन पुनरावृत्ति की तुलना में यह कुछ करता है।

पुनरावर्ती को समाप्त करने के लिए, आपको फ़ंक्शन को परिभाषा में एक चयनित कथन शामिल करना होगा ताकि फ़ंक्शन को स्वयं को एक पुनरावर्ती कॉल दिए बिना वापस लौटने के लिए मजबूर किया जा सके। पुनरावर्ती फ़ंक्शन की परिभाषा में चयनित कथन की अनुपस्थिति एक बार कॉल करने पर फ़ंक्शन को अनंत पुनरावृत्ति में होने देगी।

आइए एक फ़ंक्शन के साथ पुनरावृत्ति को समझते हैं जो संख्या के भाज्य को वापस करेगा।

 int factorial (इंट संख्या) {int answer; if (संख्या == 1) {वापसी 1; } और {उत्तर = भाज्य (संख्या -1) * संख्या; // पुनरावर्ती कॉलिंग} रिटर्न (उत्तर); } 

उपरोक्त कोड में, दूसरे भाग में बयान पुनरावृत्ति को दर्शाता है, क्योंकि कथन फ़ंक्शन को फैक्टरियल () कहता है जिसमें वह रहता है।

Iteration की परिभाषा

Iteration निर्देश की सेट को बार-बार निष्पादित करने की एक प्रक्रिया है जब तक कि पुनरावृति कथन गलत नहीं हो जाता। पुनरावृत्ति विवरण में प्रारंभ, तुलना, पुनरावृति कथन के अंदर कथनों का निष्पादन और अंत में नियंत्रण चर का अद्यतन शामिल है। नियंत्रण चर अद्यतन होने के बाद इसकी तुलना फिर से की जाती है, और प्रक्रिया खुद को दोहराती है, जब तक कि पुनरावृति कथन में स्थिति गलत नहीं हो जाती। पुनरावृति कथन "लूप" के लिए हैं, जबकि "लूप, " डू-ए-लूप "।

वैरिएशन स्टेटमेंट वेरिएबल्स को स्टोर करने के लिए स्टैक का उपयोग नहीं करता है। इसलिए, पुनरावर्ती कार्य की तुलना में पुनरावृति कथन का निष्पादन तेजी से होता है। यहां तक ​​कि पुनरावृत्ति फ़ंक्शन में बार-बार फ़ंक्शन कॉलिंग का ओवरहेड नहीं होता है जो पुनरावर्ती फ़ंक्शन की तुलना में इसके निष्पादन को भी तेज करता है। नियंत्रण की स्थिति झूठी होने पर पुनरावृत्ति को समाप्त कर दिया जाता है। नियंत्रण कथन में नियंत्रण की स्थिति की अनुपस्थिति के परिणामस्वरूप एक अनंत लूप हो सकता है, या यह एक संकलन त्रुटि का कारण हो सकता है।

आइए उपरोक्त उदाहरण के संबंध में पुनरावृति को समझें।

 int factorial (इंट संख्या) {int answer = 1; // इनिशियलाइज़ेशन की आवश्यकता है क्योंकि इसमें इसके इनिशियलाइज़ेशन से पहले कचरा मूल्य हो सकता है (int t = 1; t> num; t ++) // iteration {उत्तर = उत्तर * (t); वापसी (उत्तर); }} 

उपरोक्त कोड में, फ़ंक्शन पुनरावृत्ति कथन का उपयोग करके संख्या का भाज्य देता है।

पुनरावृत्ति और पुनरावृत्ति के बीच महत्वपूर्ण अंतर

  1. पुनरावृत्ति तब होती है जब किसी कार्यक्रम में एक विधि बार-बार खुद को बुलाती है जबकि, पुनरावृति तब होती है जब किसी कार्यक्रम में निर्देशों का एक सेट बार-बार निष्पादित होता है।
  2. एक पुनरावर्ती पद्धति में निर्देशों का सेट, स्टेटमेंट कॉलिंग और खुद को समाप्त करने की स्थिति होती है, जबकि पुनरावृत्ति बयानों में एक लूप और एक नियंत्रण चर के भीतर निर्देशन, वृद्धि, स्थिति, निर्देश का सेट होता है।
  3. एक सशर्त बयान पुनरावृत्ति की समाप्ति का फैसला करता है और परिवर्तनशील मूल्य को नियंत्रित करता है पुनरावृत्ति कथन की समाप्ति का निर्णय करता है।
  4. यदि विधि समाप्ति स्थिति के लिए नेतृत्व नहीं करता है तो यह अनंत पुनरावृत्ति में प्रवेश करता है। दूसरी ओर, अगर नियंत्रण चर कभी समाप्ति के मूल्य की ओर नहीं जाता है, तो पुनरावृत्ति मूल्य अनन्तता को पुनरावृत्त करता है।
  5. अनंत पुनरावृत्ति प्रणाली दुर्घटना का कारण बन सकती है, जबकि अनंत पुनरावृत्ति सीपीयू चक्रों का उपभोग करती है।
  6. पुनरावृत्ति हमेशा विधि के लिए लागू की जाती है, जबकि पुनरावृत्ति अनुदेश के सेट पर लागू होती है।
  7. पुनरावृत्ति के दौरान निर्मित चर को स्टैक पर संग्रहीत किया जाता है जबकि, पुनरावृत्ति को स्टैक की आवश्यकता नहीं होती है।
  8. पुनरावृत्ति बार-बार फ़ंक्शन कॉलिंग के ओवरहेड का कारण बनता है, जबकि पुनरावृत्ति में फ़ंक्शन कॉलिंग ओवरहेड नहीं होता है।
  9. फंक्शन कॉलिंग के कारण ओवरहेड निष्पादन की पुनरावृत्ति धीमी होती है, जबकि पुनरावृत्ति का निष्पादन तेज होता है।
  10. पुनरावर्तन कोड के आकार को कम करता है जबकि, पुनरावृत्तियाँ एक कोड को लंबा बनाती हैं।

निष्कर्ष:

पुनरावर्ती कार्य लिखना आसान है, लेकिन वे पुनरावृत्ति की तुलना में अच्छा प्रदर्शन नहीं करते हैं, जबकि, पुनरावृत्ति लिखना कठिन है, लेकिन पुनरावृत्ति की तुलना में उनका प्रदर्शन अच्छा है।

Top