Daniel,
I assume by "recursion" you mean that the Manipulate keeps reevaluating and getting the same answer (not counting up).
Manipulate[x = x0;
x = x + 1;
x, {x0, 0, 1}, TrackedSymbols :> {x0}]
Will fix your issue. Now it only updates when x0 changes and not when x changes (which causes a total reevaluation of the expressions)
Regards,
Neil