Recursion is when a function calls itself to solve smaller parts of a problem. It keeps calling itself until it reaches a base case, which stops the recursion. Each call waits for the next call to finish, creating a stack of calls known as the call stack. When the base case returns a value, each previous call uses that value to compute its own result and returns it back up. This process continues until the first call returns the final answer. The example code calculates factorial by multiplying n by factorial of n-1 until n is zero. The execution table shows each call, the current value of n, the call stack, and return values step by step. The variable tracker shows how n, return values, and call stack depth change over time. Key moments clarify why recursion continues until the base case and why calls stack up before returning. The visual quiz tests understanding of call stack state and base case timing. Recursion is like stacking plates: you keep stacking until you reach the bottom plate, then you unstack them one by one to get the final result.