Memoization to cache’owanie wyników funkcji dla danych wejść, żeby kolejne wywołania brały wynik z pamięci. Pomaga przy nachodzących na siebie podproblemach (typowo w DP), gdy te same stany liczone są wiele razy.
function fib(n: number, memo = new Map<number, number>()): number {
if (n <= 1) return n;
const cached = memo.get(n);
if (cached !== undefined) return cached;
const value = fib(n - 1, memo) + fib(n - 2, memo);
memo.set(n, value);
return value;
}