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.