I rather dislike recursion, I find it to be the remedial hammer of software development. Sure there are some use cases, but most problems are solvable in a more efficient manner, such as the use of formulas. Even if a formula is not viable, there are other methods that produce better maintainable code. I label recursion as 'use as a last resort'.