सबरूटीन्स। पुनरावर्ती प्रक्रियाएं और कार्य


कार्य
जनजाति की भाषा "तुम्बा-युम्बा" की वर्णमाला में; चार अक्षर: "के", "एल", "एम" और "एन". आपको n अक्षरों वाले सभी शब्द प्रदर्शित करने होंगे जो इस वर्णमाला के अक्षरों से बनाए जा सकते हैं।

समस्या एक सामान्य क्रूर-बल समस्या है जिसे एक छोटी समस्या में कम किया जा सकता है।
हम शब्द के लिए अक्षरों को क्रमिक रूप से प्रतिस्थापित करेंगे।
किसी शब्द की पहली स्थिति वर्णमाला के 4 अक्षरों (K. L, M, N) में से एक हो सकती है।
पहले K अक्षर को रखते हैं। फिर, पहले अक्षर K वाले सभी प्रकार प्राप्त करने के लिए, आपको शेष n - 1 स्थितियों में अक्षरों के सभी संभावित संयोजनों की गणना करने की आवश्यकता है। (तस्वीर देखें).
इस प्रकार, लंबाई n - 1 की चार समस्याओं को हल करने के लिए समस्या कम हो जाती है।
 
n वर्णों पर बार-बार पुनरावृति करें
डब्ल्यू[0]='के'; // अंतिम L-1 वर्णों पर पुनरावृति करें डब्ल्यू[0]='एल'; // अंतिम L-1 वर्णों पर पुनरावृति करें डब्ल्यू[0]='एम'; // अंतिम L-1 वर्णों पर पुनरावृति करें डब्ल्यू[0]='एन'; // अंतिम L-1 वर्णों पर पुनरावृति करें w - एक कैरेक्टर स्ट्रिंग जो वर्किंग वर्ड को स्टोर करता है।
इस प्रकार, हमें रिकर्सन मिला। हम पुनरावर्ती प्रक्रिया के रूप में समस्या के समाधान की व्यवस्था कर सकते हैं। 
यह निर्धारित करना बाकी है कि पुनरावृत्ति कब समाप्त होगी? जब सभी वर्ण सेट हो जाते हैं, अर्थात सेट वर्णों की संख्या n होती है। इस मामले में, आपको परिणामी शब्द को स्क्रीन पर प्रदर्शित करने और प्रक्रिया से बाहर निकलने की आवश्यकता है।

C++ प्रोग्राम इस तरह दिखेगा।
<दिव> #शामिल<iostream> नेमस्पेस एसटीडी का उपयोग करना; शून्य TumbaWords (स्ट्रिंग ए, स्ट्रिंग और डब्ल्यू, इंट एन) // w - बदलने योग्य पैरामीटर (स्ट्रिंग-परिणाम) // TumbaWords प्रक्रिया वर्णमाला को वर्ण स्ट्रिंग के रूप में पास करती है, // शब्द शब्द और पहले से सेट वर्णों की संख्या (पूर्ववर्ती – 0)। { int मैं; अगर (एन == डब्ल्यू आकार ()) {   // यदि सभी वर्णों को पहले ही शब्द पर सेट कर दिया गया है, तो     // फिर एक स्ट्रिंग को आउटपुट करना और प्रक्रिया को समाप्त करना आवश्यक है cout << << एंडल; वापस करना; } के लिए (i = 1; i < A.size (); i ++) {   // यदि ऊपर दी गई स्थिति झूठी है (अर्थात, सभी वर्णों के बीच अंतर नहीं है,   // फिर लूप में हम वर्णमाला के सभी वर्णों से गुजरते हैं और // वैकल्पिक रूप से चरित्र को पहले खाली स्थान पर रखें डब्ल्यू [एन] = ए [i]; TumbaWords (A, w, N+1); } } मुख्य() { इंटन; स्ट्रिंगवर्ड; इंटन; सिने>> एन; शब्द का आकार बदलें (एन); // स्ट्रिंग को आकार n तक बढ़ाएं तुम्बावर्ड्स ("केएलएमएन", शब्द, 0); }
ध्यान दें कि w एक परिवर्तनशील पैरामीटर (परिणाम स्ट्रिंग) है!