Recursion in C is a programming technique where a function calls itself to solve a problem. It's particularly useful for problems that can be broken down into smaller, similar subproblems. Here are some key points about recursion:
Basic Structure
A recursive function generally consists of two main parts:
- Base Case: This stops the recursion when a certain condition is met. Without a base case, the function would call itself indefinitely.
- Recursive Case: This is where the function calls itself with modified arguments, moving toward the base case.
Example: Factorial Function
Here's a simple example of a recursive function that calculates the factorial of a number:
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1; // Base case
} else {
return n * factorial(n - 1); // Recursive case
}
}
int main() {
int num = 5;
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
Pros and Cons
Pros:
- Simplifies code for problems that naturally fit recursive solutions (like tree traversals, Fibonacci series, etc.).
- Often leads to more readable and elegant code.
Cons:
- Can lead to high memory usage due to the call stack, which may cause stack overflow for deep recursion.
- Recursive functions can be less efficient than their iterative counterparts because of function call overhead.
Tail Recursion
A specific case of recursion is tail recursion, where the recursive call is the last operation in the function. Some compilers can optimize tail-recursive functions to avoid increasing the call stack size:
int tail_recursive_factorial(int n, int acc) {
if (n == 0) {
return acc; // Base case
} else {
return tail_recursive_factorial(n - 1, n * acc); // Tail recursive call
}
}

Comments
Post a Comment