Recursion in C

Understanding recursive functions and their implementation in C programming

What is Recursion?

Recursion is a programming technique where a function calls itself to solve a problem. It's useful for problems that can be broken down into smaller, similar subproblems.

Recursion Kya Hai? (Hinglish)

Recursion ek programming technique hai jahan ek function khud ko call karta hai problem solve karne ke liye. Ye un problems ke liye useful hai jo chote, similar subproblems mein break ho sakte hain.

Recursive Function Components

Component Description Example
Base Case Condition to stop recursion if (n == 0) return 1;
Recursive Case Function calls itself return n * factorial(n-1);
Stack Memory for function calls Function call stack

Example Program

#include 

// Factorial using recursion
int factorial(int n) {
    // Base case
    if (n == 0 || n == 1) {
        return 1;
    }
    // Recursive case
    return n * factorial(n - 1);
}

// Fibonacci using recursion
int fibonacci(int n) {
    // Base cases
    if (n == 0) return 0;
    if (n == 1) return 1;
    // Recursive case
    return fibonacci(n - 1) + fibonacci(n - 2);
}

// Binary search using recursion
int binarySearch(int arr[], int low, int high, int target) {
    if (low <= high) {
        int mid = low + (high - low) / 2;
        
        if (arr[mid] == target) {
            return mid;
        }
        if (arr[mid] > target) {
            return binarySearch(arr, low, mid - 1, target);
        }
        return binarySearch(arr, mid + 1, high, target);
    }
    return -1;
}

int main() {
    // Factorial example
    int num = 5;
    printf("Factorial of %d is %d\n", num, factorial(num));
    
    // Fibonacci example
    printf("Fibonacci sequence up to %d:\n", num);
    for (int i = 0; i <= num; i++) {
        printf("%d ", fibonacci(i));
    }
    printf("\n");
    
    // Binary search example
    int arr[] = {2, 4, 6, 8, 10};
    int size = sizeof(arr) / sizeof(arr[0]);
    int target = 6;
    int result = binarySearch(arr, 0, size - 1, target);
    if (result != -1) {
        printf("Element found at index %d\n", result);
    } else {
        printf("Element not found\n");
    }
    
    return 0;
}
                    

Program Explanation (Hinglish)

Is program mein different recursive functions ka use kiya gaya hai:

  • factorial(): Number ka factorial calculate kar raha hai
  • fibonacci(): Fibonacci sequence generate kar raha hai
  • binarySearch(): Sorted array mein element search kar raha hai
  • Base case: Recursion ko stop karne ke liye condition
  • Recursive case: Function khud ko call kar raha hai

Important Points

  • Every recursive function needs a base case
  • Recursion uses more memory than iteration
  • Stack overflow can occur with deep recursion
  • Some problems are naturally recursive
  • Tail recursion can be optimized