Source : Free On-Line Dictionary of Computing
tail recursion optimisation
(TRO) When the last thing a function or procedure does is to
call itself, it is not necessary to retain the calling
environment. This is important when a procedure calls itself
{recursive}ly many times for, without tail recursion
optimisation, the environments of earlier invocations would
fill up the memory only to be discarded when (if) the last
call terminated.
Tail recursion optimisation is a special case of {last call
optimisation} but it allows the further optimisation that some
arguments may be passed in situ, possibly in {register}s. It
allows recursive functions to be compiled into {iterative}
loops. See also {conversion to iteration}, {tail recursion
modulo cons}.