Recursion & Dynamic Programming

The same small puzzle drawn again inside itself, smaller each time, with a note pinned to the copies someone has already solved.
Before you start. You need to know what happens when one function calls another: it pauses, hands control over, and picks back up exactly where it left off when the called one returns - How Code Becomes Execution (compilers, stack & heap) is where that pause-and-resume machinery lives. Here the function calls itself instead of a different one, which is the only new part.