Memoization in top-down dynamic programming means solving a problem by breaking it into smaller parts recursively, but saving each result in a memo array. When the function is called with a value n, it first checks if the answer is already in memo. If yes, it returns that answer immediately. If not, it computes the answer by calling itself recursively for smaller values, stores the result in memo, and returns it. This avoids repeated work and speeds up the program. For example, in Fibonacci, base cases for n=0 or 1 return immediately. For larger n, the function calls Fib(n-1) and Fib(n-2), sums them, stores in memo, and returns. The execution table shows how memo fills step by step, and recursive calls reduce thanks to memo hits. This technique changes exponential recursion into efficient linear time.