पुनरावृत्ति बनाम लूप
जानें कि किसे चुनना है।
पुनरावृत्ति बनाम लूप, CoddyKit पर C Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
दोहराने के दो तरीके
कई समस्याएँ पुनरावृत्ति या पुनरावर्तन, दोनों में से किसी एक से हल की जा सकती हैं। पुनरावर्तन में लूप का उपयोग होता है, जबकि पुनरावृत्ति में फलन आह्वानों का।
दोनों एक ही परिणाम दे सकते हैं, लेकिन शैली, स्मृति-उपयोग और गति में भिन्न होते हैं।
लूप के साथ फैक्टोरियल
यहाँ फैक्टोरियल को for लूप के साथ पुनरावर्ती रूप में लिखा गया है। कोई फलन स्वयं को नहीं बुलाता; एक ही चर गुणनफल को संचित करता है।
#include <stdio.h>
long factorial(int n) {
long result = 1;
for (int i = 2; i <= n; i++)
result *= i;
return result;
}
int main(void) {
printf("%ld\n", factorial(6));
return 0;
}पुनरावृत्ति के साथ फैक्टोरियल
पुनरावर्ती संस्करण छोटा है और गणितीय परिभाषा को सीधे दर्शाता है।
factorial(6) के लिए दोनों 720 प्रिंट करते हैं, लेकिन उनकी कार्यप्रणाली अलग होती है।
long factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}स्मृति में अंतर
पुनरावर्तन सामान्यतः स्मृति की एक निश्चित और छोटी मात्रा का उपयोग करता है: केवल कुछ स्थानीय चरों का।
पुनरावृत्ति प्रत्येक आह्वान के लिए एक स्टैक फ़्रेम जोड़ती है, इसलिए गहरी पुनरावृत्ति अधिक स्मृति लेती है और स्टैक स्थान समाप्त हो सकता है।
गति में अंतर
हर पुनरावर्ती आह्वान की थोड़ी लागत होती है: फ़्रेम तैयार करना और उससे लौटना।
सरल गिनती वाले कार्यों में लूप अक्सर थोड़े तेज़ होते हैं, क्योंकि वे इस आह्वान-संबंधी अतिरिक्त लागत से बचते हैं।
पुनरावृत्ति कब बेहतर होती है
जब समस्या स्वाभाविक रूप से पुनरावर्ती हो, जैसे वृक्ष, नेस्टेड संरचनाएँ या विभाजित-करो-और-विजय-पाओ एल्गोरिदम, तब पुनरावृत्ति बहुत उपयोगी होती है।
ऐसे मामलों में पुनरावर्ती कोड मैन्युअल स्टैक वाले समान लूप की तुलना में छोटा और अधिक स्पष्ट होता है।
पुनरावर्तन कब बेहतर होता है
सरणी का योग निकालने या गिनती करने जैसे सीधे रैखिक दोहराव के लिए लूप सरल होता है और स्थिर स्मृति का उपयोग करता है।
यह बड़े इनपुट पर स्टैक ओवरफ़्लो के जोखिम से भी बचाता है।
int sum_array(int a[], int n) {
int total = 0;
for (int i = 0; i < n; i++)
total += a[i];
return total;
}एक ही कार्य, दोनों शैलियाँ
1 से n तक का योग दोनों तरीकों से निकाला जा सकता है। यहाँ पुनरावर्ती संस्करण के समान उत्तर लौटाने वाला पुनरावर्ती संस्करण दिया गया है।
#include <stdio.h>
int sum_to(int n) {
int total = 0;
for (int i = 1; i <= n; i++)
total += i;
return total;
}
int main(void) {
printf("%d\n", sum_to(100));
return 0;
}पुनरावृत्ति को लूप में बदलना
किसी भी पुनरावृत्ति को पुनरावर्तन में लिखा जा सकता है; कभी-कभी इसके लिए अपना स्पष्ट स्टैक इस्तेमाल करना पड़ता है।
फैक्टोरियल या योग जैसी सरल रैखिक पुनरावृत्ति को संचायक चर वाले साधारण लूप में बदला जा सकता है।
#include <stdio.h>
int main(void) {
int n = 5, result = 1;
while (n > 1) { result *= n; n--; }
printf("%d\n", result);
return 0;
}टेल पुनरावृत्ति पर ध्यान दें
टेल-पुनरावर्ती आह्वान किसी फलन की अंतिम क्रिया होती है। कुछ कंपाइलर इसे एक फ़्रेम का दोबारा उपयोग करते हुए लूप में अनुकूलित कर देते हैं।
C इसकी गारंटी नहीं देता, इसलिए गहरी पुनरावृत्ति के लिए इस पर निर्भर न रहें।
int sum_tail(int n, int acc) {
if (n == 0) return acc;
return sum_tail(n - 1, acc + n);
}दृष्टिकोण चुनना
पूछिए: क्या समस्या स्वाभाविक रूप से नेस्टेड या विभाजित-करो-और-विजय-पाओ प्रकार की है? तब पुनरावृत्ति उपयुक्त है।
क्या यह बहुत बड़े इनपुट वाला सरल रैखिक दोहराव है? तब पुनरावर्तन अधिक सुरक्षित और अक्सर तेज़ होता है।
त्वरित जाँच
दोनों दृष्टिकोणों की तुलना कीजिए।
पुनरावलोकन
पुनरावृत्ति और पुनरावर्तन एक ही समस्याएँ हल कर सकते हैं। लूप स्थिर स्मृति का उपयोग करते हैं और रैखिक कार्यों के लिए अच्छे हैं; पुनरावृत्ति नेस्टेड तथा विभाजित-करो-और-विजय-पाओ समस्याओं के लिए अधिक स्पष्ट होती है, लेकिन हर आह्वान पर एक स्टैक फ़्रेम की लागत आती है।
एआई शिक्षक के साथ C सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 39
- पाठ
- 144
अक्सर पूछे जाने वाले प्रश्न
क्या “पुनरावृत्ति बनाम लूप” पाठ निःशुल्क है?
हाँ—“पुनरावृत्ति बनाम लूप” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“पुनरावृत्ति बनाम लूप” में मैं क्या सीखूँगा?
जानें कि किसे चुनना है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“पुनरावृत्ति बनाम लूप” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- पुनरावृत्ति कैसे काम करती है
- पारंपरिक पुनरावर्ती समस्याएँ
- पुनरावृत्ति बनाम लूप
- Stack Overflow से बचना