A transformation applied to functional programs to replace recuRSion with iteration. A tail-recuRSive function can be compiled to an iterative loop where the recuRSive call becomes a jump back to the start and the parameteRS are held in registeRS which are updated with new values each time around the loop. See Iteration, Tail recuRSion optimisation.