I'm a sucker for beautiful recursion despite its flaws. It just makes some problems so elegant. Of course, I refactor when needed, but there's something inherently satisfying about a neat recursive function. And with memoization, a lot of the inefficiency is handled. Still, always profile your code to make sure …