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 के बिना, function खुद को हमेशा के लिए call करेगा → stack overflow → crash! हर recursive function में base case होना चाहिए।
Recursion कैसे काम करती है
हर recursive call call stack में add होती है। Base case पर पहुँचने पर functions एक-एक करके return होते हैं (stack unwind होती है)।
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
#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; }
factorial(4) कैसे काम करता है:
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
#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; }
अंकों का जोड़ – Recursion से
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 बेहतर
Recursive functions लिखें: (1) GCD (2) String reverse (3) Palindrome check (4) किसी array का sum (5) n तक prime numbers print करें