I think code with recursion is harder to understand (not to read) than when using other constructs. But when using tree structures, for example, I always choose recursion. Of course, my trees aren't that big that memory consumption is an issue (I was never aware how bad it can be, thanks for that!).