इटरेशन

परिणामों का एक (संभवतः असीमित) क्रम उत्पन्न करने के लिए पुनरावृत्ति एक प्रक्रिया की पुनरावृत्ति (इटरेशन) है। प्रक्रिया का प्रत्येक दोहराव एक एकल पुनरावृत्ति है, और प्रत्येक पुनरावृत्ति का परिणाम अगले पुनरावृत्ति का प्रारंभिक बिंदु होता है।

गणित और कंप्यूटर विज्ञान में, पुनरावृत्ति (प्रत्यावर्तन की संबंधित तकनीक के साथ) कलन विधि का एक मानक तत्व है।

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

गणित में पुनरावृति का एक अन्य उपयोग पुनरावृत्त विधियों में है जिनका उपयोग कुछ गणितीय समस्याओं के अनुमानित संख्यात्मक समाधान उत्पन्न करने के लिए किया जाता है। न्यूटन की विधि पुनरावृत्त विधि का एक उदाहरण है। किसी संख्या के वर्गमूल की मैन्युअल गणना एक सामान्य उपयोग और एक प्रसिद्ध उदाहरण है।

कम्प्यूटिंग
कंप्यूटिंग में, पुनरावृति एक कंप्यूटर प्रोग्राम के भीतर बयानों के एक ब्लॉक से पुनरावृत्ति की एक परिभाषित संख्या के लिए चिह्नित करने की तकनीक है। बयानों के उस ब्लॉक को पुनरावृत्त कहा जाता है; एक कंप्यूटर वैज्ञानिक कथनों के उस ब्लॉक को पुनरावृत्ति के रूप में भी संदर्भित कर सकता है।

कार्यान्वयन
पुनरावृत्तियों को निष्पादित करने के लिए लूप्स सबसे सामान्य भाषा संरचनाएं हैं। निम्नलिखित स्यूडोकोड लूप के माध्यम से धनु कोष्ठक के बीच कोड की रेखा को तीन बार "पुनरावृत्त" करता है, और वेतन वृद्धि के रूप में i के मानों का उपयोग करता है।

a = 0 for i from 1 to 3       // loop three times {    a = a + i            // add the current value of i to a } print a                 // the number 6 is printed (0 + 1; 1 + 2; 3 + 3)

वांछित कार्य को निष्पादित करने के लिए स्टेटमेंट के ब्रैकेटेड ब्लॉक के बाहर प्रोग्राम के अन्य भागों से मानों का उपयोग करना अनुमत है, और प्रायः आवश्यक होता है।

इटरेटर लूप के लिए वैकल्पिक भाषा निर्माण का गठन करते हैं, जो विशिष्ट डेटा संरचनाओं पर लगातार पुनरावृत्ति सुनिश्चित करते हैं। वे अंततः बाद के कोडिंग प्रयासों में समय और प्रयास बचा सकते हैं। विशेष रूप से, एक पुनरावर्तक किसी को ऐसी डेटा संरचना के प्रत्येक नोड पर एक ही प्रकार के ऑपरेशन को दोहराने की अनुमति देता है, प्रायः कुछ पूर्व-परिभाषित क्रम में है।

इटरेशन पूरी तरह कार्यात्मक भाषा निर्माण हैं, जो पुनरावृत्तियों के दौरान डेटा को स्वीकार या अस्वीकार करते हैं।

पुनरावर्तन के साथ संबंध
पुनरावृत्तियों और पुनरावृत्तियों की अलग-अलग एल्गोरिथम परिभाषाएँ हैं, भले ही वे समान प्रभाव/परिणाम उत्पन्न कर सकते हैं। प्राथमिक अंतर यह है कि पुनरावृत्ति को पूर्व ज्ञान के बिना समाधान के रूप में नियोजित किया जा सकता है कि कार्रवाई को कितनी बार दोहराना होगा, जबकि एक सफल पुनरावृत्ति के लिए पूर्वज्ञान की आवश्यकता होती है।

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

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

नीचे दिया गया कोड स्कीम प्रोग्रामिंग भाषा में एक पुनरावर्ती एल्गोरिदम का एक उदाहरण है जो पिछले शीर्षक के तहत छद्म कोड के समान परिणाम आउटपुट करेगा।

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

कंप्यूटिंग और गणित के विपरीत, शैक्षिक पुनरावृति पूर्व निर्धारित नहीं हैं; इसके अतिरिक्त, कार्य को तब तक दोहराया जाता है जब तक कि कुछ बाहरी मानदंडों (प्रायः एक परीक्षण) के अनुसार सफलता प्राप्त नहीं हो जाती।

यह भी देखें

 * रिकर्सन
 * भग्न (फ्रैक्टल)
 * क्रूर-बल खोज
 * पुनरावृत्त फलन
 * विश्लेषणात्मक कार्यों की अनंत रचनाएँ