i like to think of recursion as pretty much a while loop but with the inside of the loop as a method.
i got to say though, i don't think i've even written a recursive function since my uni days... i imagine they would be useful for some types of applications, but i guess I've never come across a situation where it would be the best solution.
i think they're harder to understand for a start, plus i wouldn't think they'd be that efficient, as you would have to propagate up the call stack.
i dunno, it would be interesting to hear point of views from people who do use them actually and what the advantages are.