# C Program for factorial of a number

Factorial of a non-negative integer, is multiplication of all integers smaller than or equal to n. For example factorial of 6 is 6*5*4*3*2*1 which is 720.

Recursive Solution:
Factorial can be calculated using following recursive formula.

```  n! = n * (n-1)!
n! = 1 if n = 0 or n = 1
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Following is implementation of factorial.

## C

```#include<stdio.h>

// function to find factorial of given number
unsigned int factorial(unsigned int n)
{
if (n == 0)
return 1;
return n*factorial(n-1);
}

int main()
{
int num = 5;
printf("Factorial of %d is %d", num, factorial(num));
return 0;
}
```

## Java

```// Java program to find factorial of given number
class Test
{
// method to find factorial of given number
static int factorial(int n)
{
if (n == 0)
return 1;

return n*factorial(n-1);
}

// Driver method
public static void main(String[] args)
{
int num = 5;
System.out.println("Factorial of "+ num + " is " + factorial(5));
}
}
```

Output:
`Factorial is 5 is 120`

Iterative Solution:
Factorial can also be calculated iteratively as recursion can be costly for large numbers.

## C

```#include<stdio.h>

// function to find factorial of given number
unsigned int factorial(unsigned int n)
{
int res = 1, i;
for (i=2; i<=n; i++)
res *= i;
return res;
}

int main()
{
int num = 5;
printf("Factorial of %d is %d", num, factorial(num));
return 0;
}
```

## Java

```// Java program to find factorial of given number
class Test
{
// Method to find factorial of given number
static int factorial(int n)
{
int res = 1, i;
for (i=2; i<=n; i++)
res *= i;
return res;
}

// Driver method
public static void main(String[] args)
{
int num = 5;
System.out.println("Factorial of "+ num + " is " + factorial(5));
}
}
```

Output:
`Factorial of 5 is 120`

Time complexity of the above solutions is O(n).

Please write comments if you find any bug in above code/algorithm, or find other ways to solve the same problem.