  In software engineering, taking a good election between recursion and
iteration is essential because their efficiency and maintenance are different.
In fact, developers often need to transform iteration into recursion (e.g., in
debugging, to decompose the call graph into iterations); thus, it is quite
surprising that there does not exist a public transformation from loops to
recursion that handles all kinds of loops. This article describes a
transformation able to transform iterative loops into equivalent recursive
methods. The transformation is described for the programming language Java, but
it is general enough as to be adapted to many other languages that allow
iteration and recursion. We describe the changes needed to transform loops of
types while/do/for/foreach into recursion. Each kind of loop requires a
particular treatment that is described and exemplified.
