परिचय
रिकर्सन (Recursion) तब होता है जब कोई मेथड स्वयं को कॉल करता है। इसका उपयोग उन समस्याओं को हल करने के लिए किया जाता है जिन्हें छोटी, समान उप-समस्याओं में विभाजित किया जा सकता है।
उदाहरण: संखकी की घात (Power) की गणना
using System;
public class Demo
{
public static void Main(string[] args)
{
int n = 5; // आधार
int p = 2; // घातांक
long res = Power(n, p);
Console.WriteLine("{0}^{1} = {2}", n, p, res); // आउटपुट: 25
Console.ReadKey();
}
static long Power(int n, int p)
{
if (p != 0)
{
// रिकर्सिव कॉल: घातांक घटाते हुए
return n * Power(n, p - 1);
}
return 1; // बेस केस: किसी भी संख्या की घात 0 = 1
}
}
कार्यप्रवाह (n=5, p=2)
Power(5, 2)→ 5 *Power(5, 1)Power(5, 1)→ 5 *Power(5, 0)Power(5, 0)→ 1 (बेस केस)- वापसी: 5 * 5 * 1 = 25
महत्वपूर्ण बिंदु
- हमेशा एक बेस केस (समाप्ति शर्त) शामिल करें, अन्यथा अनंत रिकर्सन और स्टैक ओवरफ्लो होगा।
- रिकर्सन स्टैक मेमोरी का उपयोग करता है; गहरी रिकर्सन के लिए इटरेटिव समाधान बेहतर हो सकते हैं।
- उपयोग केस: ट्री/ग्राफ ट्रैवर्सल, फैक्टोरियल, फाइबोनैचि, टॉवर ऑफ हनोई, आदि।