Tail Recursion

Tail Recursion

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 class Test{
public static void fun(int n){
  if(n>0){
   System.out.print(n);
   fun(n-1);
}
}
public static void main(String[] args){
    fun(5);
}
}

output-: 5 4 3 2 1



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