Recursion is when a method calls itself to solve a problem by breaking it down into smaller, self-similar pieces.
To write a recursive method in Java, you need a way for the method to call itself and a base case for when to stop.
The two golden rules of recursion are to always have a base case and to always move toward the base case.
Use recursion for naturally recursive problems and manageable input sizes, and avoid it when the input size may create too many recursive calls or when an iterative solution is simpler or more readable.