Home Tutorials C++ Tutorial Recursion
Recursion

Recursion


C++ Recursion

Definition: Recursion is a programming technique where a function calls itself to solve a problem. It works by breaking down a complex problem into smaller, more manageable "sub-problems" of the same type. A recursive function continues to call itself until it reaches a predefined exit point.

Why: Recursion is a landmark topic in beginner C++ curricula because it introduces a different way of thinking about logic—moving away from iterative loops and toward mathematical definitions. It is a vital tool for handling hierarchical data structures, such as folder directories, or implementing complex algorithms like Merge Sort and Depth-First Search.


The Two Essential Components

Every successful recursive function must have two distinct parts to function correctly and prevent program failure:

1. The Base Case

The "exit condition." This is the specific scenario where the function stops calling itself and returns a simple value. Without this, the function will run forever.

2. The Recursive Case

The part of the function where the "self-call" happens. It must move the program closer to the Base Case with each step (usually by reducing a number).

Example: Calculating Factorial

The factorial of 5 (written as 5!) is calculated as 5 × 4 × 3 × 2 × 1. In code, we can define this recursively as n * factorial(n - 1):

#include <iostream>
using namespace std;

int factorial(int n) {
    // Base Case: If n is 0, the factorial is 1
    if (n == 0) {
        return 1;
    }
    // Recursive Case: n! = n * (n-1)!
    return n * factorial(n - 1);
}

int main() {
    // Calling factorial(5)
    cout << "Factorial of 5 is: " << factorial(5); // Outputs: 120
    return 0;
}

Recursion vs. Iteration (Loops)

Feature Recursion Iteration (Loops)
Implementation Function calls itself. Uses for, while, or do-while.
Termination Requires a Base Case. Requires a Loop Condition to become false.
Memory Usage High (Uses stack memory for each call). Low (Uses the same memory space).

Key Notes

  • Stack Overflow: This is a famous error that occurs when a recursive function never hits a base case. Every time the function calls itself, it "pushes" a new layer onto the computer's memory stack. If this happens too many times, the stack fills up entirely and the program crashes.
  • Readability vs. Performance: Recursion often results in much shorter and "cleaner" code that is easier to read. However, for simple tasks like counting, a loop is usually faster and more efficient because it doesn't have the overhead of multiple function calls.
  • When to use: Use recursion when a problem has a "natural" recursive structure—like walking through a family tree, solving a Sudoku puzzle, or navigating through complex folders on a computer.

🏋️ Test Yourself With Exercises

Take our quiz on Recursion to test your knowledge.

Browse Quizzes »