Tail Recursion
Traditional Recursion
The typical model is that you perform your recursive calls first, and then you take the return value of the recursive call and calculate the result. In this manner, you don't get the result of your calculation until you have returned from every recursive call.
Tail Recursion
You perform your calculations first, and then you execute the recursive call, passing the results of your current step to the next recursive step.
Basically, the return value of any given recursive step is the same as the return value of the next recursive call.
The consequence of this is that once you are ready to perform your next recursive step, you don't need the current stack frame any more.
Require to be support by complier
Reference
https://stackoverflow.com/questions/33923/what-is-tail-recursion