This visual guide compares dynamic programming, recursion, and greedy approaches. It shows how recursion solves problems by calling itself repeatedly, often recomputing the same subproblems, as in Fibonacci calculation. Dynamic programming improves recursion by storing results to avoid repeated work when subproblems overlap. Greedy algorithms make the best local choice at each step but only work when this leads to a global optimum. The flowchart helps decide which method to use based on problem properties like optimal substructure and overlapping subproblems. The execution table traces recursive Fibonacci calls step-by-step, showing the call stack and results returned. Key moments clarify why recursion repeats work, when DP is better, and why greedy doesn't fit all problems. The quiz tests understanding of call stack states and effects of memoization. The snapshot summarizes when to use each approach simply.