Excessive fondness of recursion is something that often falls into my "Computer Science Crap" category. However unless you have very specific runtime requirements I suggest sticking with what you've got in the current scenario... albeit with careful depth etc. checking if you suspect that you'll be up against resource limitations.
In any event, you will need to consider whether an attempted conversion to an operations list does actually reduce the resource usage: recursion in a language with support for it can end up being very efficient.
MarkMLl