>One thing of note, however. A non-recurisve solution usually is faster (not that it matters much). This is because you don't have the push-pop mechanism going on all the time.
But then, you have other things you had to code to replace recursion, so I figure these should make up for some of the difference in speed. These would probably be lighter things, like a few more variables and a do-while loop, and I expect the end result would be what you said - recursive solution's speed dropping with the number of iterations, or being just constantly slower because of the overhead.
The big argument against recursion would be the case when you have to pass large arrays, heavy objects or lots of parameters to a recursing function. It's going to curse and re-curse at you for that :).