Memoization Algorithm
In plain terms
Top-down dynamic programming that caches subproblem results.
Going deeper
This approach solves a problem recursively but stores each subproblem's answer so it's computed only once. It turns exponential recursion into polynomial time.
Under the hood
Trades memory for speed; the recursive (top-down) counterpart to bottom-up tabulation.
Examples
Fibonacci, edit distance, recursive DP, grid path counting.
Think of it like...
Like keeping a notebook of answers so you never solve the same sub-puzzle twice.