रिकर्सन एक ऐसी तकनीक है जहां एक फंक्शन स्वयं को कॉल करता है। यहां हम एक संख्या के अंकों का योग निकालने के लिए रिकर्सन का उपयोग करेंगे।
एल्गोरिदम
- यदि संख्या 0 नहीं है, तो अंतिम अंक (संख्या % 10) लें और इसे शेष संख्या (संख्या / 10) के अंकों के योग में जोड़ें।
- यदि संख्या 0 है, तो 0 लौटाएं (बेस केस)।
रिकर्सिव फंक्शन
public int addFunc(int val) {
if (val != 0) {
return (val % 10 + addFunc(val / 10));
} else {
return 0;
}
}
पूर्ण उदाहरण
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo {
class MyApplication {
static void Main(string[] args) {
int val, result;
Calc cal = new Calc();
val = 789;
Console.WriteLine("Number: {0}", val);
result = cal.addFunc(val);
Console.WriteLine("Sum of Digits in {0} = {1}", val, result);
Console.ReadLine();
}
}
class Calc {
public int addFunc(int val) {
if (val != 0) {
return (val % 10 + addFunc(val / 10));
} else {
return 0;
}
}
}
}
आउटपुट
Number: 789 Sum of Digits in 789 = 24
चरण-दर-चरण निष्पादन (789 के लिए)
addFunc(789)→ 9 +addFunc(78)addFunc(78)→ 8 +addFunc(7)addFunc(7)→ 7 +addFunc(0)addFunc(0)→ 0 (बेस केस)- वापसी: 7 + 8 + 9 = 24
मुख्य बिंदु
- रिकर्सन में बेस केस अनिवार्य है ताकि अनंत लूप न हो।
- स्टैक ओवरफ्लो से बचने के लिए बड़ी संख्याओं के लिए इटरेटिव दृष्टिकोण बेहतर हो सकता है।
- यही तर्क किसी भी बेस (बाइनरी, ऑक्टल, हेक्साडेसिमल) के लिए काम करता है।