• Tail Recursion: A call is tail-recursive if nothing has to be done after the call returns. I.e. when the call returns, the returned value is immediately returned from the calling function. More simply, tail recursion is when the recursive call is the last statement in the function.
  • If the recursive call occurs at the beginning of a method, it is called a head recursion. Head Recursion: A call is head-recursive when the first statement of the function is the recursive call.