Back

Recursion

Recursion is when a function calls itself to solve a smaller version of the same problem. Every recursive function needs a base case that stops it; otherwise it runs forever.

function factorial(n: number): number {
  if (n <= 1) return 1          // base case
  return n * factorial(n - 1)   // recursive case
}

factorial(5)  // 5 * 4 * 3 * 2 * 1 = 120

// Sum nested arrays
function sumAll(items: (number | number[])[]): number {
  return items.reduce<number>(
    (total, item) => total + (Array.isArray(item) ? sumAll(item) : item),
    0
  )
}

sumAll([1, [2, 3], [4, [5]]])  // 15

Roadmap