C++ Recursive Functions

A recursive function in C++ is a function that calls itself directly or indirectly to solve a problem. Recursion is often used for problems that can be divided into smaller, similar sub-problems, such as calculating factorials, Fibonacci numbers, or traversing data structures like trees.

Syntax

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

Example Program: Factorial Using Recursion

#include <iostream>
using namespace std;

// Recursive function to calculate factorial
int factorial(int n) {
    if(n == 0 || n == 1) { // Base condition
        return 1;
    } else {
        return n * factorial(n - 1); // Recursive call
    }
}

int main() {

    int num = 5;
    cout << "Factorial of " << num << " is " << factorial(num) << endl;

    return 0;
}

Output

Factorial of 5 is 120

Example: Fibonacci Series Using Recursion

#include <iostream>
using namespace std;

// Recursive function to calculate Fibonacci number
int fibonacci(int n) {
    if(n == 0) return 0;          // Base condition
    if(n == 1) return 1;          // Base condition
    return fibonacci(n - 1) + fibonacci(n - 2); // Recursive call
}

int main() {

    int n = 7;
    cout << "Fibonacci series up to " << n << ": ";

    for(int i = 0; i < n; i++) {
        cout << fibonacci(i) << " ";
    }

    return 0;
}

Output

Fibonacci series up to 7: 0 1 1 2 3 5 8

Important Notes

  • Recursive functions must have a base condition to stop the recursion; otherwise, it leads to infinite recursion.
  • Each recursive call adds a new frame to the call stack. Excessive recursion may cause stack overflow.
  • Recursion is useful for problems that can be divided into smaller similar sub-problems.

Next Topic

Next, learn about C++ Arrays.