एक पुनरावर्तन का उपयोग कर कई कार्यात्मक भाषाओं में एक अच्छा अभ्यास माना जाता है। मुझे लगता है कि संकलक भाषात्मक कोड को अनुकूलित करने के तरीके के कारण यह अच्छा है।सी # में यह एल्गोरिदम में पुनरावर्ती कार्यों का उपयोग करने के लिए एक अच्छा अभ्यास है?
लेकिन क्या एल्गोरिदम बनाते समय सी # में रिकर्सन का उपयोग करना एक अच्छा अभ्यास है? क्या सी # के संबंध में यह कहना सही है कि पुनरावर्ती एल्गोरिदम के परिणामस्वरूप आपका ढेर काफी नाटकीय रूप से बढ़ रहा है (यदि कॉल की मात्रा बहुत बड़ी है) और यह कोई तेज़ नहीं होगा, और इसके परिणामस्वरूप स्टैक ओवरफ़्लो हो सकता है। या पुनरावर्ती कार्यों को कुशल बनाने के लिए कुछ अनुकूलन भी हो रहे हैं?
यदि आप कार्यात्मक भाषाओं और सी # में रिकर्सन का उपयोग करते हुए एल्गोरिदम के बीच कुछ तुलना (गति, स्मृति, पठनीयता) प्रदान करेंगे तो मैं सराहना करता हूं।
कम से कम, जब यह समझ में आता है तो रिकर्सन का उपयोग करें (और आप कर सकते हैं, यानी जब यह स्टैक ओवरफ़्लो न हो) - उदा। पेड़ ट्रैवर्सल और एल्गोरिदम के लिए जो पुनरावृत्ति में परिवर्तित होने पर बहुत बदसूरत/जटिल हो जाते हैं। – delnan
http://stackoverflow.com/questions/491376/why-doesnt-net-c-eliminate-tail-recursion –