Yes. of course, but if a good alternative is at hand then it is better to avoid recursion.
I think the main problem with the way a lot of recursive algorithms are implemented is that often the programmer neglects to put checks on the recursion depth (which is also often the reason they use the recursive algorithm.)
As you said, if a good alternative is available then, implementing a "flat", i.e, non-recursive, algorithm is fine but, there are some problems that have elegant and concise recursive algorithms as solutions and the equivalent "flat" algorithm is not nearly as elegant nor concise.
Compilers are notorious for using recursive algorithms for one thing or another when there are very decent non-recursive solutions to attain the same goal.