๐ŸŽ“ A1Learner
๐Ÿ”

C++ Recursion

Recursion is a way for a function to solve a problem through smaller calls of itself. Each call works on a smaller value than the call before it.

A countdown that calls itself

The countDown function prints its number first. It then calls itself with one less.

#include <iostream>

void countDown(int n) {
  if (n == 0) {
    return;
  }
  std::cout << n << std::endl;
  countDown(n - 1);
}

int main() {
  countDown(3);
  return 0;
}

Factorial by recursion

The factorial of a number is that number times the factorial of one less. The base case gives 1 for zero.

#include <iostream>

int factorial(int n) {
  if (n == 0) {
    return 1;
  }
  return n * factorial(n - 1);
}

int main() {
  std::cout << factorial(5) << std::endl;
  return 0;
}

Example

#include <iostream>

int sumTo(int n) {
  if (n == 1) {
    return 1;
  }
  return n + sumTo(n - 1);
}

int main() {
  std::cout << sumTo(10) << std::endl;
  return 0;
}

Key points

  • A recursive function calls itself with a smaller value each time.
  • The base case is the call that stops and makes no further call.
  • Each call should move the value closer to the base case.
  • The calls finish in reverse order as each one sends its result back.

In this example, sumTo adds its number to the sum of all smaller numbers. The call with 1 is the base case and sends back 1. The calls then add up to a total of 55.

Note

A missing base case makes the calls go on with no stopping call.

Try it Yourself

Edit the code, then press Run.

Running is simulated ยท Programiz C++ Compiler

Exercise

What is the job of the base case in a recursive function?