🟡 Intermediate  ·  Lesson 19

Recursion

Recursion क्या है?

जो function खुद को ही call करे उसे recursive function कहते हैं, और इस technique को recursion कहते हैं। हर recursive solution में दो ज़रूरी parts होते हैं:

  • Base Case — वो condition जहाँ function खुद को call करना बंद कर देता है (infinite recursion रोकता है)
  • Recursive Case — जहाँ function खुद को smaller input के साथ call करता है
⚠️ Base Case ज़रूरी है!

Base case के बिना, function खुद को हमेशा के लिए call करेगा → stack overflow → crash! हर recursive function में base case होना चाहिए।

Recursion कैसे काम करती है

हर recursive call call stack में add होती है। Base case पर पहुँचने पर functions एक-एक करके return होते हैं (stack unwind होती है)।

Concept – Countdown
void countdown(int n) {
    if (n == 0) { printf("Blast off!\n"); return; }  // Base case
    printf("%d...\n", n);
    countdown(n - 1);   // Recursive call
}
// countdown(3) → countdown(2) → countdown(1) → countdown(0)
// फिर वापस: 0 done → 1 done → 2 done → 3 done

Factorial – Recursion से

Factorial: 5! = 5 × 4 × 3 × 2 × 1 = 120. Recursively: n! = n × (n-1)!, base: 0! = 1

C Language – Recursive Factorial
#include <stdio.h>

long long factorial(int n) {
    if (n <= 1) return 1;          // Base case
    return n * factorial(n - 1);   // Recursive case
}

int main() {
    int n;
    printf("n daalen: ");
    scanf("%d", &n);
    printf("%d! = %lld\n", n, factorial(n));
    return 0;
}
n daalen: 6 6! = 720

factorial(4) कैसे काम करता है:

Trace
factorial(4)
  → 4 * factorial(3)
      → 3 * factorial(2)
          → 2 * factorial(1)
              → 1 return (base case!)
          → 2 * 1 = 2 return
      → 3 * 2 = 6 return
  → 4 * 6 = 24 return

Fibonacci Series – Recursion से

Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13... हर term = पिछले दो terms का जोड़। F(n) = F(n-1) + F(n-2)। Base: F(0)=0, F(1)=1

C Language
#include <stdio.h>

int fibonacci(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n-1) + fibonacci(n-2);
}

int main() {
    int n;
    printf("Kitne terms chahiye? ");
    scanf("%d", &n);
    printf("Fibonacci: ");
    for (int i = 0; i < n; i++)
        printf("%d ", fibonacci(i));
    printf("\n");
    return 0;
}
Kitne terms chahiye? 8 Fibonacci: 0 1 1 2 3 5 8 13

अंकों का जोड़ – Recursion से

C Language
int ankJod(int n) {
    if (n == 0) return 0;          // Base case
    return (n % 10) + ankJod(n / 10); // Recursive
}
// ankJod(12345) = 5 + ankJod(1234)
//               = 5 + 4 + ankJod(123)
//               = 5+4+3+2+1 = 15

सारांश

  • Recursion = function का खुद को call करना
  • हर recursive function में होना चाहिए: Base Case + Recursive Case
  • Base case के बिना → infinite recursion → stack overflow
  • Common recursive problems: factorial, Fibonacci, sum of digits, power, GCD
  • Performance ज़रूरी हो तो iteration use करें; clarity के लिए recursion बेहतर
🏋️ Practice

Recursive functions लिखें: (1) GCD (2) String reverse (3) Palindrome check (4) किसी array का sum (5) n तक prime numbers print करें

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C में recursion क्या है?
Recursion तब है जब कोई function किसी समस्या को उसी समस्या के छोटे रूपों में तोड़कर हल करने को खुद को call करता है। हर call एक सरल input पर काम करता है जब तक वह एक base case तक न पहुँचे जो recursion रोकता है।
recursion में base case क्या है?
Base case वह condition है जो recursive function को आगे खुद को call करने से रोकती है, सरलतम input के लिए सीधा उत्तर देते हुए। सही base case के बिना, function अंतहीन रूप से खुद को call करता रहेगा और अंततः crash होगा।
recursion और iteration में क्या अंतर है?
Recursion बार-बार function calls से समस्या हल करता है, जबकि iteration loops इस्तेमाल करता है। Recursion tree traversal जैसी स्वाभाविक रूप से recursive समस्याओं के लिए ज़्यादा सुंदर हो सकता है, पर हर call के लिए अतिरिक्त memory लेता है; iteration आमतौर पर ज़्यादा memory-कुशल है।
recursion में stack overflow किससे होता है?
Stack overflow तब होता है जब recursion बहुत गहरा चला जाए — अक्सर क्योंकि base case गायब है या कभी नहीं पहुँचता — तो हर call call stack में जुड़ता रहता है जब तक जगह खत्म न हो और program crash न हो।
C में recursion के आम उदाहरण क्या हैं?
Classic recursive उदाहरणों में factorial, Fibonacci numbers, महत्तम समापवर्तक, Tower of Hanoi, और trees तथा linked lists जैसी data structures traverse करना शामिल हैं। इन समस्याओं में स्वाभाविक "छोटा रूप हल करो" संरचना है जो recursion के लिए उपयुक्त है।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.