```// 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));
}

}```
```// ITERATIVE CODE : Time Complexity : Θ(n), Auxiliary Space : Θ(1)

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

public class Main {

static int fact(int n)
{
int res = 1;

for(int i=2; i<=n; i++)
{
res = res * i;
}
return res;
}

public static void main (String[] args) {

int number = 5;

System.out.println(fact(number));

}
}

// RECURSIVE CODE : Time Complexity : Θ(n), Auxiliary Space : Θ(n)

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

public class Main {

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

return n * fact(n-1);
}

public static void main (String[] args) {

int number = 5;

System.out.println(fact(number));

}
}```
star

Sun Feb 06 2022 02:48:25 GMT+0000 (UTC) https://practice.geeksforgeeks.org/tracks/DSASP-Mathematics/?batchId=190&tab=2

#java #mathematics #lecture #gfg #geeksforgeeks #factorial #iterative #recursive