मुख्य अंतर - पुनरावृत्ति बनाम पुनरावृत्ति
प्रोग्रामिंग समस्याओं को हल करने के लिए Recursion and Iteration का उपयोग किया जा सकता है। रिकर्सन या पुनरावृत्ति का उपयोग करके समस्या को हल करने का दृष्टिकोण समस्या को हल करने के तरीके पर निर्भर करता है। रिकर्सन और पुनरावृत्ति के बीच महत्वपूर्ण अंतर यह है कि रिकर्सन एक फ़ंक्शन को उसी फ़ंक्शन के भीतर कॉल करने के लिए एक तंत्र है, जबकि पुनरावृत्ति निर्देशों के एक सेट को बार-बार निष्पादित करना है जब तक कि दी गई स्थिति सत्य न हो। रिकर्सन और इटरेशन एल्गोरिदम विकसित करने और सॉफ्टवेयर अनुप्रयोगों के निर्माण के लिए प्रमुख तकनीकें हैं।
पुनरावृत्ति क्या है?
जब कोई फंक्शन खुद को फंक्शन के अंदर कॉल करता है तो उसे रिकर्सन कहते हैं। रिकर्सन दो प्रकार के होते हैं। वे परिमित रिकर्सन और अनंत रिकर्सन हैं। परिमित रिकर्सन की समाप्ति स्थिति है। अनंत रिकर्सन की समाप्ति की स्थिति नहीं है।
फ़ैक्टोरियल्स की गणना करने के लिए प्रोग्राम का उपयोग करके रिकर्सन को समझाया जा सकता है।
एन!=n(n-1)!, अगर n>0
एन!=1, अगर n=0;
3(3!=321) के भाज्य की गणना करने के लिए नीचे दिए गए कोड को देखें।
इंटमेन () {
इंट वैल्यू=फैक्टोरियल (3);
प्रिंटफ ("फैक्टोरियल %d\n", मान);
रिटर्न 0;
}
इंटफैक्टोरियल (इंट) {
अगर(एन==0) {
रिटर्न 1;
}
और {
रिटर्न एन फैक्टोरियल(एन-1);
}
}
फ़ैक्टोरियल (3) को कॉल करते समय, वह फ़ंक्शन फ़ैक्टोरियल (2) को कॉल करेगा। फैक्टोरियल (2) को कॉल करते समय, वह फ़ंक्शन फैक्टोरियल (1) को कॉल करेगा। फिर भाज्य (1) भाज्य (0) कहलाएगा। फैक्टोरियल (0) 1 वापस आ जाएगा। उपरोक्त कार्यक्रम में, "अगर ब्लॉक" में n==0 स्थिति आधार शर्त है।इसी के अनुसार भाज्य फलन को बार-बार कहा जाता है।
पुनरावर्ती कार्य स्टैक से संबंधित हैं। सी में, मुख्य कार्यक्रम में कई कार्य हो सकते हैं। तो, मुख्य () कॉलिंग फ़ंक्शन है, और फ़ंक्शन जिसे मुख्य प्रोग्राम द्वारा बुलाया जाता है उसे फ़ंक्शन कहा जाता है। जब फ़ंक्शन को कॉल किया जाता है, तो कॉल किए गए फ़ंक्शन को नियंत्रण दिया जाता है। फ़ंक्शन निष्पादन पूरा होने के बाद, नियंत्रण मुख्य पर वापस आ जाता है। फिर मुख्य कार्यक्रम जारी है। इसलिए, यह निष्पादन जारी रखने के लिए एक सक्रियण रिकॉर्ड या स्टैक फ्रेम बनाता है।
चित्रा 01: रिकर्सन
उपरोक्त कार्यक्रम में, मुख्य से फैक्टोरियल (3) को कॉल करते समय, यह कॉल स्टैक में एक सक्रियण रिकॉर्ड बनाता है। फिर, स्टैक के शीर्ष पर फैक्टोरियल (2) स्टैक फ्रेम बनाया जाता है और इसी तरह। सक्रियण रिकॉर्ड स्थानीय चर आदि के बारे में जानकारी रखता है। हर बार फ़ंक्शन को कॉल करने पर, स्टैक के शीर्ष पर स्थानीय चर का एक नया सेट बनाया जाता है। ये स्टैक फ्रेम गति को धीमा कर सकते हैं। इसी तरह रिकर्सन में, एक फ़ंक्शन स्वयं को कॉल करता है। एक पुनरावर्ती फ़ंक्शन के लिए समय की जटिलता को जितनी बार कहा जाता है, उतनी बार पाया जाता है। एक फ़ंक्शन कॉल के लिए समय जटिलता ओ (1) है। n पुनरावर्ती कॉलों की संख्या के लिए, समय जटिलता O(n) है।
पुनरावृत्ति क्या है?
पुनरावृत्ति निर्देशों का एक खंड है जो दी गई शर्त के सही होने तक बार-बार दोहराता है। "लूप के लिए", "डू-जबकि लूप" या "लूप के दौरान" का उपयोग करके पुनरावृत्ति प्राप्त की जा सकती है। "लूप के लिए" सिंटैक्स इस प्रकार है।
के लिए (आरंभीकरण; स्थिति; संशोधित करें) {
// बयान;
}
चित्र 02: "लूप फ्लो डायग्राम के लिए"
आरंभीकरण चरण पहले निष्पादित होता है। यह चरण लूप नियंत्रण चर घोषित करने और आरंभ करने के लिए है। यदि स्थिति सत्य है, तो घुंघराले ब्रेसिज़ के अंदर के कथन निष्पादित होते हैं। वे कथन तब तक निष्पादित होते हैं जब तक कि शर्त सत्य न हो। यदि स्थिति गलत है, तो नियंत्रण "लूप के लिए" के बाद अगले कथन पर जाता है। लूप के अंदर बयानों को निष्पादित करने के बाद, नियंत्रण अनुभाग को संशोधित करने के लिए जाता है। यह लूप कंट्रोल वेरिएबल को अपडेट करना है। फिर स्थिति की फिर से जाँच की जाती है।अगर कंडीशन सही है, कर्ली ब्रेसिज़ के अंदर स्टेटमेंट्स एक्जीक्यूट होंगे। इस तरह "लूप के लिए" पुनरावृत्त होता है।
“जबकि लूप” में, लूप के अंदर के स्टेटमेंट तब तक निष्पादित होते हैं जब तक कि कंडीशन सही न हो।
जबकि (हालत){
//कथन
}
“डू-जबकि” लूप में, लूप के अंत में स्थिति की जाँच की जाती है। तो, लूप कम से कम एक बार निष्पादित होता है।
करते हैं{
//कथन
} जबकि(हालत)
पुनरावृत्ति ("लूप के लिए") का उपयोग करके 3 (3!) का भाज्य ज्ञात करने का कार्यक्रम इस प्रकार है।
इंट मेन (){
intn=3, फैक्टोरियल=1;
इंटी;
के लिए(i=1; i<=n; i++){
फैक्टोरियल=फैक्टोरियलi;
}
प्रिंटफ ("फैक्टोरियल %d\n", फैक्टोरियल है);
रिटर्न 0;
}
पुनरावृत्ति और पुनरावृत्ति के बीच समानताएं क्या हैं?
- दोनों एक समस्या को हल करने की तकनीक हैं।
- कार्य को पुनरावर्तन या पुनरावृत्ति में हल किया जा सकता है।
पुनरावृत्ति और पुनरावृत्ति में क्या अंतर है?
पुनरावृत्ति बनाम पुनरावृत्ति |
|
Recursion एक ही फंक्शन के भीतर किसी फंक्शन को कॉल करने की एक विधि है। | पुनरावृत्ति निर्देशों का एक खंड है जो दी गई शर्त के सही होने तक दोहराता है। |
अंतरिक्ष जटिलता | |
पुनरावर्ती कार्यक्रमों की अंतरिक्ष जटिलता पुनरावृत्तियों की तुलना में अधिक है। | पुनरावृत्ति में अंतरिक्ष जटिलता कम है। |
गति | |
पुनरावर्ती निष्पादन धीमा है। | आम तौर पर, पुनरावृत्ति की तुलना में पुनरावृत्ति तेज होती है। |
हालत | |
अगर कोई टर्मिनेशन कंडीशन नहीं है, तो अनंत रिकर्सन हो सकता है। | अगर शर्त कभी झूठी नहीं होती है, तो यह एक अनंत पुनरावृत्ति होगी। |
स्टैक | |
पुनरावृत्ति में, फ़ंक्शन को कॉल करने पर स्टैक का उपयोग स्थानीय चरों को संग्रहीत करने के लिए किया जाता है। | पुनरावृत्ति में, स्टैक का उपयोग नहीं किया जाता है। |
कोड पठनीयता | |
एक पुनरावर्ती कार्यक्रम अधिक पठनीय है। | पुनरावर्ती कार्यक्रम को पुनरावर्ती कार्यक्रम की तुलना में पढ़ना कठिन है। |
सारांश - पुनरावृत्ति बनाम पुनरावृत्ति
इस लेख में पुनरावृत्ति और पुनरावृत्ति के बीच अंतर पर चर्चा की गई है।प्रोग्रामिंग समस्याओं को हल करने के लिए दोनों का उपयोग किया जा सकता है। रिकर्सन और पुनरावृत्ति के बीच का अंतर यह है कि रिकर्सन एक ही फ़ंक्शन के भीतर एक फ़ंक्शन को कॉल करने के लिए एक तंत्र है और इसे दिए गए शर्त के सत्य होने तक बार-बार निर्देशों के एक सेट को निष्पादित करने के लिए पुनरावृत्त करता है। यदि किसी समस्या को पुनरावर्ती रूप में हल किया जा सकता है, तो इसे पुनरावृत्तियों का उपयोग करके भी हल किया जा सकता है।
पुनरावृत्ति बनाम पुनरावृत्ति का पीडीएफ संस्करण डाउनलोड करें
आप इस लेख का पीडीएफ संस्करण डाउनलोड कर सकते हैं और उद्धरण नोट के अनुसार इसे ऑफ़लाइन उद्देश्यों के लिए उपयोग कर सकते हैं। कृपया पीडीएफ संस्करण यहां डाउनलोड करें अंतर रिकर्सन और इटरेशन के बीच अंतर