Basically, every recursion can be implemented as a loop + stack, because that what it basically basically implemented on the machine (hardware) level - just a bunch of branches and a stack for storing return addresses and arguments.
Have a loop that repeat while the condition is not met, and instead of recursive invokation - just push the parameters for the next iterations (and possibly the last state) to the stack, and go back to the start point of the loop.
EDIT: (since it is clear you are talking about tail-recursive backtracking, and not a simple recursion):
From wikipedia: In computer science, a tail call is a subroutine call that happens inside another procedure as its final action
. As far as I know, a function with multiple recursive calls - is by definition not tail recursion, and since backtracking algorithms do have more then one call, they are not "tail recursive".
Also note - that a program that have only loops and a constant space can be translated to a second program P' that runs in polynomial time (Since there are at most 2^CONST
states, which is basically CONST'
, and verifying each of these is done in polynomial time - so total of CONST'*p(n)
time,. which is still polynomial), so unless P=NP
, it is impossible since it will allow us to solve SAT in polynomial time by translating the backtracking solution to a loop based polynomial one. (And I believe a further reduction from HP is feasible to show it is impossible anyway).