Introduction
Programming में कई problems ऐसी होती हैं जिन्हें हम बार-बार repeat करके solve करते हैं, जैसे:
- factorial निकालना
- Fibonacci series
- tree/recursive structures
इन problems को हम loops से भी solve कर सकते हैं, लेकिन कुछ cases में problem को छोटे-छोटे same type के sub-problems में divide करना ज्यादा आसान होता है।
ऐसी situations में Recursion का उपयोग किया जाता है।
Recursion में एक function खुद को ही call करता है।
यानि function अपने ही smaller version को solve करता है, जब तक कि एक base condition पूरी न हो जाए।
Recursion का concept divide and conquer approach पर based होता है।
यह concept important है क्योंकि:
- exam में conceptual + program दोनों पूछे जाते हैं
- logic understanding strong करता है
- complex problems को simple बनाता है
Definition
Recursion वह process है जिसमें एक function अपने ही function को call करता है, जब तक कि base condition satisfy न हो जाए।
Basic Structure of Recursion
function()
{
if (base condition)
return;
function(); // recursive call
}
Important Concepts
- Base Condition → recursion को रोकता है
- Recursive Call → function खुद को call करता है
- अगर base condition नहीं होगी → infinite recursion होगा
Example 1: Factorial using Recursion
#include <stdio.h>
int fact(int n)
{
if (n == 0)
return 1;
return n * fact(n - 1);
}
int main()
{
int result = fact(5);
printf("%d", result);
return 0;
}
Output:
120
Explanation:
- fact(5) → 5 × fact(4)
- fact(4) → 4 × fact(3)
- …
- fact(0) → 1 (base case)
Final:
5 × 4 × 3 × 2 × 1 = 120
Example 2: Sum of First N Numbers
#include <stdio.h>
int sum(int n)
{
if (n == 0)
return 0;
return n + sum(n - 1);
}
int main()
{
int result = sum(5);
printf("%d", result);
return 0;
}
Output:
15
Explanation:
- sum(5) → 5 + sum(4)
- sum(4) → 4 + sum(3)
- …
- sum(0) → 0
Final:
5 + 4 + 3 + 2 + 1 = 15
Example 3: Fibonacci Series
#include <stdio.h>
int fib(int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
return fib(n - 1) + fib(n - 2);
}
int main()
{
int i;
for (i = 0; i < 5; i++)
{
printf("%d ", fib(i));
}
return 0;
}
Output:
0 1 1 2 3
Explanation:
- fib(0) = 0
- fib(1) = 1
- fib(2) = fib(1) + fib(0) = 1
- fib(3) = 2
- fib(4) = 3
Example 4: Infinite Recursion (Important)
#include <stdio.h>
void test()
{
printf("Hello\n");
test();
}
int main()
{
test();
return 0;
}
Output:
Hello
Hello
Hello
...
Explanation:
- कोई base condition नहीं है
- function खुद को बार-बार call करता है
- program infinite loop में चला जाता है (stack overflow हो सकता है)
Technical Understanding
Recursion का use इन problems में होता है:
- factorial, Fibonacci
- tree traversal
- divide and conquer algorithms
- mathematical problems
Difference: Recursion vs Loop
| Recursion | Loop |
|---|---|
| Function खुद को call करता है | Iteration use करता है |
| Base condition जरूरी है | Loop condition जरूरी है |
| Complex problems में useful | Simple repetition में useful |
Exam Points
- Recursion = function calling itself
- Base condition बहुत जरूरी है
- Infinite recursion से program crash हो सकता है
- Factorial और Fibonacci most important examples हैं
- Conceptual questions अक्सर recursion से पूछे जाते हैं