Recursion in C Programming (Complete Guide with Examples)


This tutorial explains recursion in C, a technique where a function calls itself to solve a problem. It covers syntax, types, base cases, and practical examples like factorial and Fibonacci series, helping beginners understand this powerful programming concept.

1. What is Recursion

Recursion is a programming technique where a function calls itself directly or indirectly to solve a smaller instance of a problem.

Key Points:

  1. Every recursive function must have a base case to stop recursion.
  2. Recursive calls are stored in the call stack.

2. Syntax


return_type function_name(parameters) {
if (base_condition) {
return value; // stopping condition
} else {
// recursive call
function_name(smaller_problem);
}
}

3. Example 1: Factorial Using Recursion

Factorial of n is n! = n * (n-1) * (n-2) ... 1


#include <stdio.h>

int factorial(int n) {
if (n == 0) // base case
return 1;
else
return n * factorial(n - 1); // recursive call
}

int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);

printf("Factorial of %d = %d\n", num, factorial(num));
return 0;
}

Sample Output:


Enter a number: 5
Factorial of 5 = 120

4. Example 2: Fibonacci Series Using Recursion

Fibonacci series: 0, 1, 1, 2, 3, 5, 8...


#include <stdio.h>

int fibonacci(int n) {
if (n == 0)
return 0;
else if (n == 1)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}

int main() {
int n, i;
printf("Enter number of terms: ");
scanf("%d", &n);

printf("Fibonacci Series: ");
for(i = 0; i < n; i++)
printf("%d ", fibonacci(i));

return 0;
}

Sample Output:


Enter number of terms: 7
Fibonacci Series: 0 1 1 2 3 5 8

5. Key Points to Remember

  1. Always define a base case to avoid infinite recursion.
  2. Recursive functions use stack memory, so deep recursion can cause stack overflow.
  3. Useful for problems like factorial, Fibonacci, tree traversal, and divide-and-conquer algorithms.
  4. Recursion can sometimes be replaced with iteration for efficiency.