Less code, more complex recursion