Memoization in top-down dynamic programming means solving a problem by breaking it into smaller subproblems recursively, but saving each subproblem's answer in a memo array. When the function is called again with the same input, it returns the saved answer instead of recomputing. For example, in Fibonacci, fib(n) calls fib(n-1) and fib(n-2). Without memo, calls repeat many times. With memo, each fib(n) is computed once and saved. The flow is: check memo, if found return it, else compute recursively, save in memo, then return. Base cases like fib(0) and fib(1) return immediately. This approach reduces exponential time to linear time. The execution table shows each call, memo state before and after, and returned values step by step.