This is turning into a non discussion and a flamewar. I will not stand that. You present no arguments other than "recursion is bad unless absolutely necessary" which is anything but convincing. And I still don't know what are the "usual C Compilers" you're talking about, but I can assure you that the ones I use can manage a simple tail recursion call.
You made me think of
this classic piece by Spolsky. In this article, the author criticizes Java as a learning language because it teaches students to overlook the 2 most important points of computer science: pointers and recursion.
I'm not going to argue whether Java is right or wrong, frankly I couldn't care less. But once again, I won't stand by and look while recursion is dismissed as blind overhead. To me criticizing a code for using recursion instead of an iterative loop is almost as idiotic as criticizing a programmer for using functions instead of putting everything in the main() call.
Sure my code ain't the most impressive, but I'm proud of it as hell. A few months ago, I couldn't
think in recursive manner, and always admired the great devs of this forum for their ability to do it. Now I can, it did not come without effort. I don't see the point of presenting a simple iterative loop simply because
your computer cannot handle it.
Once again, code is meant to be read. I don't care what your compiler says. Do you criticize a mathematical proof because your calculator cannot compute it quickly enough?