Notes in Hindi

Introduction to Recursion in Hindi

/ BCA / Programming with C and CPP

Introduction to Recursion in Hindi

Introduction to Recursion in Hindi

What is Recursion?

Recursion एक ऐसा प्रक्रिया (process) है जिसमें कोई Function स्वयं को ही Call करता है। इसे Self Calling Function भी कहा जाता है। Recursion का प्रयोग तब किया जाता है जब कोई समस्या (problem) को छोटे-छोटे भागों (subproblems) में बाँट कर हल किया जा सके। जैसे – गणित में आपने Factorial या Fibonacci Series पढ़ा होगा, जिनमें बार-बार एक जैसे कार्य दोहराने होते हैं। Recursion इस प्रकार की समस्याओं को बहुत आसान बना देता है।

Real Life Example of Recursion

मान लीजिए आप एक कमरे के अंदर हैं और हर कमरे में एक और कमरा है और हर कमरे में एक दरवाज़ा है जो अगले कमरे में खुलता है। जब तक आखिरी कमरा नहीं आता, आप हर बार अगले कमरे में जाते रहते हैं। यह प्रक्रिया Recursion की तरह ही होती है, क्योंकि हर बार आप खुद के जैसे ही एक कार्य को दोहरा रहे होते हैं।

Why use Recursion?

  • जटिल समस्याओं को सरल बनाने के लिए
  • कई बार iteration की तुलना में code छोटा और स्पष्ट होता है
  • कुछ समस्याओं जैसे Tree Traversal, Graph Problems में Recursion अत्यंत उपयोगी होता है

Syntax and Working of Recursion in Hindi

Basic Syntax of Recursion

returnType functionName(parameters) { if (base condition) { return value; } else { return functionName(modified parameters); // recursive call } }

How Recursion Works

Recursion को समझने के लिए हमें इसके दो मुख्य हिस्सों को समझना होता है:

  • Base Case: यह वह स्थिति होती है जहां पर Recursion रुकता है। यदि base case नहीं दिया गया तो function infinite बार खुद को call करता रहेगा और Stack Overflow error दे सकता है।
  • Recursive Case: इसमें function खुद को दोबारा call करता है लेकिन modified input के साथ जिससे वह base case तक पहुँच सके।

Example - Simple Recursion

मान लीजिए हमें 1 से n तक के नंबर को print करना है:

void printNumbers(int n) { if (n == 0) return; printNumbers(n - 1); printf("%d ", n); }

ऊपर दिए गए program में पहले 1 से लेकर n-1 तक के नंबर print होंगे फिर बाद में n print होगा।

Base Case and Recursive Case in Recursion in Hindi

Base Case

Base Case वह condition होती है जो recursive calls को रोक देती है। यदि base case नहीं होगा तो function अनंत बार चलता रहेगा। जैसे:

if (n == 0) return;

यहां जब n = 0 होगा तो function return कर जाएगा, recursion यहीं रुक जाएगी।

Recursive Case

Recursive Case वह हिस्सा होता है जहाँ function खुद को call करता है। यह call ऐसा होना चाहिए कि हर बार input छोटा होता जाए ताकि एक समय बाद वह base case तक पहुँच जाए।

printNumbers(n - 1);

Flowchart of Recursive Function (Text Form)

मान लीजिए n = 3 है, तब:

  • printNumbers(3)
  • → printNumbers(2)
  • →→ printNumbers(1)
  • →→→ printNumbers(0) → return
  • →→→ print 1
  • →→ print 2
  • → print 3

Call Stack का कार्य

हर बार जब function खुद को call करता है तो एक नया frame call stack में जुड़ता है। जब base case आता है तो उन सभी calls को एक-एक कर के complete किया जाता है जिसे हम "unwinding the stack" कहते हैं।

Factorial Program using Recursion in Hindi

Factorial क्या होता है?

Factorial का मतलब है किसी संख्या n का गुणनफल 1 से लेकर n तक सभी natural numbers का। इसे ऐसे लिखा जाता है:

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

उदाहरण के लिए: 5! = 5×4×3×2×1 = 120

Factorial using Iteration

int factorial(int n) { int fact = 1; for (int i = 1; i <= n; i++) { fact = fact * i; } return fact; }

Factorial using Recursion

int factorial(int n) { if (n == 0 || n == 1) return 1; else return n * factorial(n - 1); }

Factorial Recursion Explanation

मान लीजिए factorial(4) को calculate करना है:

  • factorial(4) = 4 * factorial(3)
  • factorial(3) = 3 * factorial(2)
  • factorial(2) = 2 * factorial(1)
  • factorial(1) = 1 (Base Case)

तो, यह calculation ऐसे बनेगा:

factorial(4) = 4 * 3 * 2 * 1 = 24

Advantages of Recursion

  • कई बार problems को Recursive way में हल करना सरल होता है
  • Code छोटा और readable होता है
  • Divide and Conquer strategy में लाभदायक

Disadvantages of Recursion

  • हर बार function call होने पर stack memory consume होती है
  • यदि base case न हो या गलत हो तो Stack Overflow हो सकता है
  • Iteration की तुलना में कभी-कभी slow हो सकता है

When to use Recursion?

  • जब problem को छोटे subproblems में divide किया जा सके
  • जैसे Tree, Graph, Tower of Hanoi, Backtracking problems
  • जब logic naturally recursive हो जैसे factorial, fibonacci, permutations

Comparison Table: Iteration vs Recursion

Criteria Iteration Recursion
Memory Usage कम ज़्यादा (Call Stack की वजह से)
Code Length लंबा छोटा
Speed ज़्यादा कभी-कभी कम
Readability कम अधिक

Important Points to Remember

  • हर Recursive function में Base Case ज़रूर होना चाहिए
  • Recursive calls input को हर बार base case के करीब लाएँ
  • Stack overflow से बचने के लिए recursion की गहराई (depth) सीमित रखें

FAQs

Recursion एक ऐसी प्रक्रिया है जिसमें कोई function खुद को ही call करता है। यह तब उपयोगी होता है जब कोई समस्या को बार-बार उसी तरह से हल करना हो जैसे factorial, fibonacci, tree traversal आदि में किया जाता है।
Base Case वह condition होती है जो recursion को रोकती है। यदि base case नहीं होता, तो function अनंत बार खुद को call करता रहता और अंततः stack overflow error हो सकता है।
C में recursion तब काम करता है जब कोई function खुद को एक शर्त के अनुसार दोबारा call करता है। हर call stack में एक नया frame बनाता है और जैसे ही base case आता है, stack unwind होता है और results return होते हैं।
Recursive function की basic syntax होती है: returnType functionName(parameters) { if (base case) return value; else return functionName(modified parameters); } इसमें एक base case और एक recursive call शामिल होता है।
Factorial को recursion से लिखने के लिए यह code use किया जाता है: int factorial(int n) { if (n == 0 || n == 1) return 1; else return n * factorial(n - 1); } यह function n को base case तक reduce करता है और multiply करता जाता है।

Please Give Us Feedback