इटरेशन

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

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

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

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

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

कार्यान्वयन
नियंत्रण प्रवाह#लूप पुनरावृति करने के लिए सबसे आम भाषा का निर्माण करता है। निम्नलिखित स्यूडोकोड एक लूप के माध्यम से कर्ली ब्रैकेट्स के बीच कोड की रेखा को तीन बार पुनरावृत्त करता है, और i के मानों को वेतन वृद्धि के रूप में उपयोग करता है। ए = 0 'फॉर' आई 'फ्रॉम' 1 'टू' 3 // लूप तीन बार {    a = a + i // i का वर्तमान मान a में जोड़ें } प्रिंट ए // संख्या 6 मुद्रित है (0 + 1; 1 + 2; 3 + 3)

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

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

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

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

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

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

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

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

यह भी देखें

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