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
returnType functionName(parameters) {
if (base case) return value;
else return functionName(modified parameters);
}
इसमें एक base case और एक recursive call शामिल होता है।
int factorial(int n) {
if (n == 0 || n == 1) return 1;
else return n * factorial(n - 1);
}
यह function n को base case तक reduce करता है और multiply करता जाता है।