I have used Recursive functions/methods, in several applications across various languages for various reasons. My reasons for doing so were simple, it just made sense. Totaling amounts, quickly sorting data items that are already in memory (Quick Sorts), Getting Data one element at a time, then printing those items out as the function calls return.
While 'yes', you can, in most cases, find a solution via looping constructs, sometimes rescursion can solve complex problems through a simple solution. It's not one of those things that many developers 'go out of their way' to implement, but rather, only use it when needed. The developers that sit around TRYING to find ways to implement recursion, probably also obfuscate their code to no end.
As for college, the principles they attempt to teach you by having you code a small routine(s) using recursion, is use of the stack, and how calls are poped and pushed onto/off of that stack, what FIFO and LIFO are, Etc... It's a very effective means of teaching those concepts.
If you're feeling like this is something you should be using, don't; because it's not something most developers use. I've been doing Medical software development for 12+ years now, and I can still count the number of times I've actually implemented a recusive function call on my two hands.
... course, I use recursion to count my fingers.