पाठ 13 / 36

रिकर्शन

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

रूसी गुड़िया

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

फैक्टोरियल

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

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

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

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