Definition: A special form of recursion where the last operation of a function is a recursive call. The recursion may be optimized away by executing the call in the current stack frame and returning its result rather than creating a new stack frame.
• If a recursive function is calling itself and that recursive call is the last statement in a function, then it is called as tail recursion.
• After that call, it will nor perform anything.
• All the function will be performing on the calling time itself
• If there is some function that need to be performed after its returning time, then it is not a tail function .
Example-:
public static void fun(int n){
if(n>0){
System.out.print(n);
fun(n-1);
}
}
public static void main(String[] args){
fun(5);
}
}
Tail Recursion v/s loops:
• Tail recursion can easily convert into loops as its structure and syntax is almost same
• In terms of time taken by both is the same, 0(n)
• Space taken by tail is 0(n) whereas the space for loops is 0(1)
• To conclude, if you are using tail recursions its better to convert it into loop as the space used is less