https://mapagam.com/datastructures-algorithms/algorithm-patterns/using-recursion-patterns
Using Recursion Patterns