It's exactly this that turns me off from functional programming. Instead of wondering about different kinds of recursion I'd rather just write a loop and go on to the next thing.
a nice blog post, very detailed and I think the methodology somewhat holds. Therefore +1 from me.