Every recursive solution follows the same pattern: identify the smallest case (base case), then express the problem using a smaller version of itself (recursive case).
For factorial: smallest case is , and . For GCD: smallest case is , and GCD = GCD. When you see a new problem, ask: "What's the simplest input?" and "How can I reduce a bigger input to a smaller one?" These two questions reveal most recursive solutions.
The pattern applies to strings (first character + rest), arrays (first element + rest), trees (root + subtrees), and more. You'll see this everywhere.