Recursion works by calling the same function inside itself with a smaller input until it reaches a base case. The base case stops further calls and returns a value. Then, each previous call uses that value to compute its own return value. This process is shown step-by-step in the execution table where factorial(3) calls factorial(2), then factorial(1), then factorial(0). At factorial(0), the base case returns 1. Then factorial(1) returns 1*1=1, factorial(2) returns 2*1=2, and factorial(3) returns 3*2=6. The call stack depth grows as calls go deeper and shrinks as they return. Understanding base and recursive cases is key to writing correct recursive functions.