A recursive function call at "the very end" of a function is called tail recursive.

More formally, the value of a tail recursive call is immediately returned by the caller.

Tail recursive calls can always be optimised into simple jumps -- they are not recursive at all! This is used by the language Scheme, which uses tail recursion to express iteration.