क्या आप हमेशा पुनरावर्ती कार्य को पुनरावृति में बदल सकते हैं? हां, बिल्कुल, और चर्च-ट्यूरिंग थीसिस यह साबित करती है कि अगर स्मृति कार्य करती है। लेट शब्दों में, यह बताता है कि पुनरावर्ती कार्यों द्वारा गणना योग्य क्या पुनरावृत्त मॉडल (जैसे ट्यूरिंग मशीन) और इसके विपरीत द्वारा गणना योग्य है। थीसिस आपको ठीक से नहीं बताती है कि रूपांतरण कैसे किया जाए, लेकिन यह कहता है कि यह निश्चित रूप से संभव है।
कई मामलों में, एक पुनरावर्ती फ़ंक्शन को परिवर्तित करना आसान है। नूथ "द आर्ट ऑफ़ कंप्यूटर प्रोग्रामिंग" में कई तकनीकें प्रदान करता है। और अक्सर, पुनरावर्ती रूप से गणना की गई चीज की गणना कम समय और स्थान में पूरी तरह से अलग दृष्टिकोण से की जा सकती है। इसका क्लासिक उदाहरण फाइबोनैचि संख्या या उसके क्रम हैं। आप निश्चित रूप से अपनी डिग्री योजना में इस समस्या से मिले हैं।
इस सिक्के के फ्लिप पक्ष पर, हम निश्चित रूप से एक प्रोग्रामिंग सिस्टम की कल्पना कर सकते हैं, जो पहले परिणाम को याद करने के लिए एक निमंत्रण के रूप में एक सूत्र की पुनरावर्ती परिभाषा का इलाज करने के लिए उन्नत है, इस प्रकार कंप्यूटर को बताए जाने की परेशानी के बिना गति लाभ की पेशकश करने के लिए कौन से कदम एक पुनरावर्ती परिभाषा के साथ सूत्र की गणना में पालन करें। दीजकस्ट्रा ने निश्चित रूप से ऐसी प्रणाली की कल्पना की थी। उन्होंने एक प्रोग्रामिंग भाषा के शब्दार्थ से कार्यान्वयन को अलग करने की कोशिश में एक लंबा समय बिताया। फिर, उनकी गैर-नियतात्मक और बहुप्रचारित प्रोग्रामिंग भाषा पेशेवर प्रोग्रामर के अभ्यास से ऊपर एक लीग में हैं।
अंतिम विश्लेषण में, कई कार्यों को पुनरावर्ती रूप में समझना, पढ़ना और लिखना आसान है। जब तक कोई सम्मोहक कारण न हो, आप शायद इन कार्यों को स्पष्ट रूप से पुनरावृत्त एल्गोरिथ्म में परिवर्तित न करें। आपका कंप्यूटर उस काम को सही ढंग से संभाल लेगा।
मैं एक सम्मोहक कारण देख सकता हूं। मान लीजिए कि आप सुपर-हाई लेवल लैंग्वेज में एक प्रोटोटाइप सिस्टम है जैसे [ डोनिंग एस्बेस्टस अंडरवियर ] स्कीम, लिस्प, हास्केल, ओकेमेल, पर्ल या पास्कल। मान लीजिए कि स्थितियां ऐसी हैं जिन्हें आपको C या Java में लागू करने की आवश्यकता है। (शायद यह राजनीति है।) तो आप निश्चित रूप से कुछ कार्यों को पुनरावर्ती लिखा जा सकता है, लेकिन जो शाब्दिक अनुवाद किया गया है, आपके रनटाइम सिस्टम को विस्फोट करेगा। उदाहरण के लिए, स्कीम में अनंत पूंछ पुनरावृत्ति संभव है, लेकिन वही मुहावरा मौजूदा सी वातावरण के लिए एक समस्या का कारण बनता है। एक अन्य उदाहरण लेक्सिकली नेस्टेड फ़ंक्शंस और स्टेटिक स्कोप का उपयोग है, जो पास्कल समर्थन करता है लेकिन सी नहीं करता है।
इन परिस्थितियों में, आप मूल भाषा के राजनीतिक प्रतिरोध को दूर करने का प्रयास कर सकते हैं। आप खुद को लिस्प को बुरी तरह से फिर से लागू कर सकते हैं, जैसा कि ग्रीनस्पून (जीभ-गाल) दसवें कानून में है। या आप बस समाधान के लिए एक पूरी तरह से अलग दृष्टिकोण पा सकते हैं। लेकिन किसी भी घटना में, एक रास्ता निश्चित रूप से है।