BCA / B.Tech 10 min read

Recursion in Hindi

Recursion in C Language in Hindi | C भाषा में Recursion हिंदी में :


Recursion का मतलब है कि एक फ़ंक्शन (function) खुद को ही दोबारा कॉल करता है। यह एक शक्तिशाली तरीका है, जिसका उपयोग जटिल समस्याओं को हल करने के लिए किया जाता है। 
कई समस्याओं को छोटे-छोटे उपसमस्याओं में बांटने के लिए Recursion बहुत मददगार होती है। इस प्रकार की समस्याओं को हल करने के लिए हम Recursive Functions का उपयोग करते हैं।

C भाषा में, एक Recursive Function तब तक खुद को कॉल करता है जब तक कि कुछ बेस कंडीशन (base condition) पूरी नहीं हो जाती। 

Recursion का मुख्य सिद्धांत यह है कि हर बार समस्या को छोटा किया जाए और अंत में एक बेस कंडीशन दी जाए, जो Recursion को समाप्त कर दे।

Recursion के तत्व:

Recursion को समझने के लिए निम्नलिखित दो तत्व महत्वपूर्ण हैं:

  • Base Case (बेस केस): यह वह कंडीशन होती है, जहाँ Recursion समाप्त होता है। बेस केस बहुत जरूरी है क्योंकि बिना इसके Recursion अनंत (infinite) हो जाएगा, और प्रोग्राम क्रैश कर सकता है।
  • Recursive Case (Recursive Case): यह वह हिस्सा होता है, जहाँ फ़ंक्शन खुद को फिर से कॉल करता है, लेकिन हर बार समस्या थोड़ी छोटी हो जाती है।

Recursion का सामान्य रूप:

void function() {
    if (base condition) {
        // Recursion end (Base Case)
    } else {
        // Recursive Case
        function();  // Function calling itself (Recursive Call)
    }
}
इस संरचना में, अगर base condition पूरी हो जाती है, तो function का recursive call बंद हो जाता है, अन्यथा function खुद को पुनः कॉल करता रहता है।

Types of Recursion in C Language in Hindi | Recursion के प्रकार:

Recursion को मुख्य रूप से दो प्रकारों में बांटा जा सकता है:

  • Direct Recursion (प्रत्यक्ष पुनरावृत्ति): इसमें कोई function खुद को सीधे कॉल करता है।

उदाहरण:

void directRecursion() {
    directRecursion();  // Function calling itself
}
  • Indirect Recursion (अप्रत्यक्ष पुनरावृत्ति): इसमें एक function किसी दूसरे function को कॉल करता है, और वह दूसरा function फिर से पहले function को कॉल करता है। यह एक प्रकार का चक्रीय पुनरावृत्ति है।


उदाहरण:

void functionA() {
    functionB();
}

void functionB() {
    functionA();
}

Recursion का एक उदाहरण: Factorial का कार्यक्रम

Factorial की गणना का एक क्लासिक उदाहरण है, जहाँ recursion का उपयोग किया जाता है। Factorial (n!) एक संख्या n का product होता है, जो 1 से लेकर n तक की सभी संख्याओं का होता है। Factorial की गणना के लिए recursion एक उपयुक्त तरीका है।

Factorial का गणितीय फॉर्मूला:

n! = n × (n - 1) × (n - 2) × ... × 1
Factorial को recursive तरीके से परिभाषित किया जा सकता है:


n! = n × (n - 1)!
1! = 1

Factorial का Recursive Program (C में):


#include <stdio.h>

// Function to calculate factorial
int factorial(int n) {
    if (n == 0) {
        return 1;  // Base Case: 0! = 1
    } else {
        return n * factorial(n - 1);  // Recursive Case
    }
}

int main() {
    int number = 5;
    int result = factorial(number);
    printf("Factorial of %d is: %d\n", number, result);
    return 0;
}

Explanation (स्पष्टीकरण) :

  • Base Case: जब n == 0, तब factorial 1 होता है, जिसे सीधे return कर दिया जाता है।
  • Recursive Case: हर बार function खुद को (n - 1) के साथ कॉल करता है और इसे n से गुणा करता है। यह तब तक चलता रहता है जब तक कि n 0 न हो जाए।

Recursion के फायदे :

  • कोड सरल और स्पष्ट होता है: कुछ समस्याओं को हल करने के लिए Recursion कोड को आसान और सरल बना देता है, विशेषकर tree traversal, graph traversal, और divide and conquer algorithms जैसी समस्याओं में।
  • जटिल समस्याओं को हल करना आसान होता है: Recursion का उपयोग करके जटिल समस्याओं को छोटे-छोटे उपसमस्याओं में बांट कर हल किया जा सकता है। उदाहरण के लिए, Tower of Hanoi, Fibonacci Series, Merge Sort, और Quick Sort जैसी समस्याओं को recursion से हल किया जा सकता है।

Recursion के नुकसान :

  • Stack Overflow: हर बार जब function खुद को call करता है, तो सिस्टम के stack memory में एक entry बनती है। यदि recursion अनंत (infinite) हो जाए, या बहुत गहरे स्तर (depth) तक चला जाए, तो stack memory खत्म हो सकती है और stack overflow की स्थिति उत्पन्न हो सकती है।
  • Higher Time and Space Complexity: कभी-कभी Recursion के कारण समय और memory की जटिलता बढ़ जाती है, क्योंकि हर recursive call के लिए एक नया stack frame बनाया जाता है।

Recursion का एक और उदाहरण: Fibonacci Series

Fibonacci Series वह series होती है, जिसमें अगली संख्या दो पिछली संख्याओं के योग के बराबर होती है। इस series की पहली दो संख्याएँ 0 और 1 होती हैं।

Fibonacci series को recursive तरीके से परिभाषित किया जा सकता है:


F(0) = 0
F(1) = 1
F(n) = F(n - 1) + F(n - 2)  (n >= 2 के लिए)

Fibonacci Series का Recursive Program (C में):

#include <stdio.h>

// Function to calculate nth Fibonacci number
int fibonacci(int n) {
    if (n == 0) {
        return 0;  // Base Case 1: F(0) = 0
    } else if (n == 1) {
        return 1;  // Base Case 2: F(1) = 1
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);  // Recursive Case
    }
}

int main() {
    int n = 6;
    printf("Fibonacci number at position %d is: %d\n", n, fibonacci(n));
    return 0;
}

Explanation (स्पष्टीकरण):

  • Base Case: जब n == 0 या n == 1, तो सीधे 0 या 1 return किया जाता है।
  • Recursive Case: Fibonacci series की गणना के लिए function खुद को (n - 1) और (n - 2) के साथ कॉल करता है और इन दोनों का योग return करता है।

Recursion और Iteration (Loop) के बीच अंतर :

  • Recursion: इसमें function खुद को बार-बार कॉल करता है और समस्या को छोटे टुकड़ों में बांटता है।
  • Iteration: इसमें loop (जैसे for loop, while loop) का उपयोग करके समस्या का समाधान किया जाता है।

Recursion in Hindi