Tail recursion and Tail call elimination - Factorial

PHOTO EMBED

Sun Feb 06 2022 20:50:52 GMT+0000 (UTC)

Saved by @Uttam #java #gfg #geeksforgeeks #lecture #recursion #tailrecursion #tailcallelimination #factorial

// NON-TAIL RECURSIVE
 
import java.io.*;
import java.util.*;
 
class GFG 
{

	static void fun(int n)
	{
		if(n == 0 || n == 1)
			return 1;
 
		return n*fact(n - 1);
 
	}
  
    public static void main(String [] args) 
    {
    	fun(3);
    }

}




// TAIL RECURSIVE

import java.io.*;
import java.util.*;

class GFG {

	
	static int fact(int n, int k)
	{
		if(n == 0 || n == 1)
			return k;

		return fact(n - 1, k * n);

	}
  
    public static void main(String [] args) 
    {
    	System.out.println(fact(3, 1));
    }

}
content_copyCOPY

OUTPUT : ----------- 3! = 6