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