The problem with recursion is that it can be hungry on memory; I find on my PC that recursions which get out of hand cause a StackOverflowError somewhere between 3000 and 4000 calls. But recursion done correctly is a nice technique, as Ulf has told us.
But I know how to write a Fibonacci recursion which runs in linear time, and if you look in Anne Kaldewaij's book
Programming : the derivation of algorithms Hemel Hempstead : Prentice Hall International, 1990, I think page 98, you can find how to write a Fibonacci number which runs in logarithmic time.
The alternative to recursion is iteration, which in
Java means while, do-while or for.