# रिकर्शन — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-recursion

> एक फंक्शन जो छोटी उप-समस्याएँ हल करने के लिए खुद को कॉल करता है।

## रूसी गुड़िया

रिकर्शन एक **मात्रियोश्का गुड़िया** खोलने जैसा है: हर गुड़िया के अंदर उसकी छोटी प्रति होती है, जब तक सबसे छोटी वाली न मिले जो आगे नहीं खुलती — यही **बेस केस** है।

## फैक्टोरियल

हर रिकर्सिव फंक्शन को एक बेस केस (रिकर्शन रोकता है) और एक रिकर्सिव केस (छोटे इनपुट के साथ खुद को कॉल करता है) चाहिए।

```c
int factorial(int n) {
    if (n <= 1) return 1;        // base case
    return n * factorial(n - 1); // recursive case
}

// factorial(4) -> 4*3*2*1 = 24
```

Output:

```
24
```

## स्टैक पर नज़र रखें

हर कॉल **कॉल स्टैक** में एक फ्रेम जोड़ता है। बेस केस न होने (या गलत होने) पर अनंत रिकर्शन और **स्टैक ओवरफ़्लो** क्रैश होता है।
