I would define recursion as "(the employ of a stack)[1] to solve a problem by first solving one or more simpler problems and then combining the solution(s) and, possibly, other information, to arrive at an answer."
So just throwing everything onto a stack doesn't actually make it iterative. It just makes the stack non-transparent.
If you just want to use a stack other than the processor stack to store your information, then it's trivial to do that. If you want a real iterative solution, then see my previous answer.
[1] Note that this is redundant, since solving simpler problems and then combining them implies the use of a stack, unless you have a finite set of sub-problems (so you can use an array) or temporal order is unimportant (so you can use a queue). |