arguably more compact, and intuitively easier to understand in terms of recursion calls