Related Articles
Program for factorial of a number
• Difficulty Level : Basic
• Last Updated : 24 Jul, 2020

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++

 `// C++ program to find factorial of given number``#include ``using` `namespace` `std;`` ` `// function to find factorial of given number``unsigned ``int` `factorial(unsigned ``int` `n)``{``    ``if` `(n == 0)``        ``return` `1;``    ``return` `n * factorial(n - 1);``}`` ` `// Driver code``int` `main()``{``    ``int` `num = 5;``    ``cout << ``"Factorial of "``         ``<< num << ``" is "` `<< factorial(num) << endl;``    ``return` `0;``}`` ` `// This code is contributed by Shivi_Aggarwal`

## C

 `// C program to find factorial of given number``#include `` ` `// 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``));``    ``}``}`

## Python3

 `# Python 3 program to find ``# factorial of given number`` ` `# Function to find factorial of given number``def` `factorial(n):``      ` `    ``if` `n ``=``=` `0``:``        ``return` `1``     ` `    ``return` `n ``*` `factorial(n``-``1``)``  ` `# Driver Code``num ``=` `5``;``print``(``"Factorial of"``, num, ``"is"``,``factorial(num))``  ` `# This code is contributed by Smitha Dinesh Semwal`

## C#

 `// C# program to find factorial``// of given number``using` `System;`` ` `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()``    ``{``        ``int` `num = 5;``        ``Console.WriteLine(``"Factorial of "``                          ``+ num + ``" is "` `+ factorial(5));``    ``}``}`` ` `// This code is contributed by vt_m`

## PHP

 ``

Output:

`Factorial of 5 is 120`

Iterative Solution:
Factorial can also be calculated iteratively as recursion can be costly for large numbers. Here we have shown the iterative approach using both for and while loop.
Using For loop

## C++

 `// C++ program for factorial of a number``#include ``using` `namespace` `std;`` ` `// 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;``}`` ` `// Driver code``int` `main()``{``    ``int` `num = 5;``    ``cout << ``"Factorial of "``         ``<< num << ``" is "``         ``<< factorial(num) << endl;``    ``return` `0;``}`` ` `// This code is contributed by Shivi_Aggarwal`

## C

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

## Python3

 `# Python 3 program to find ``# factorial of given number`` ` `# Function to find factorial of given number``def` `factorial(n):``      ` `    ``res ``=` `1``     ` `    ``for` `i ``in` `range``(``2``, n``+``1``):``        ``res ``*``=` `i``    ``return` `res`` ` `# Driver Code``num ``=` `5``;``print``(``"Factorial of"``, num, ``"is"``,``factorial(num))``  ` `# This code is contributed by Smitha Dinesh Semwal`

## C#

 `// C# program to find``// factorial of given number``using` `System;`` ` `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()``    ``{``        ``int` `num = 5;``        ``Console.WriteLine(``            ``"Factorial of "` `+ num``            ``+ ``" is "` `+ factorial(5));``    ``}``}`` ` `// This code is contributed by vt_m`

## PHP

 ``

Output :

`Factorial of 5 is 120`

Using While loop

## C

 `// C program for factorial of a number``#include `` ` `// function to find factorial of given number``unsigned ``int` `factorial(unsigned ``int` `n)``{``     ``if``(n == 0)``          ``return` `1;``    ``int` `i = n, fact = 1;``    ``while` `(n / i != n) {``        ``fact = fact * i;``        ``i--;``    ``}``    ``return` `fact;``}`` ` `int` `main()``{``    ``int` `num = 5;``    ``printf``(``"Factorial of %d is %d"``, num, factorial(num));``    ``return` `0;``}`

## C++

 `// C++ program for factorial of a number``#include ``using` `namespace` `std;`` ` `// function to find factorial of given``// number using while loop``unsigned ``int` `factorial(unsigned ``int` `n)``{``    ``if``(n == 0)``          ``return` `1;``    ``int` `i = n, fact = 1;``    ``while` `(n / i != n) {``        ``fact = fact * i;``        ``i--;``    ``}``    ``return` `fact;``}`` ` `// Driver code``int` `main()``{``    ``int` `num = 5;``    ``cout << ``"Factorial of "``         ``<< num << ``" is "``         ``<< factorial(num) << endl;``    ``return` `0;``}``// This code is contributed by Shivi_Aggarwal`

## Java

 `// Java program to find factorial of given number``class` `Test {``    ``// Method to find factorial of the given number``    ``static` `int` `factorial(``int` `n)``    ``{``        ``if``(n == ``0``)``           ``return` `1``;``        ``int` `i = n, fact = ``1``;``        ``while` `(n / i != n) {``            ``fact = fact * i;``            ``i--;``        ``}``        ``return` `fact;``    ``}`` ` `    ``// Driver method``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `num = ``5``;``        ``System.out.println(``            ``"Factorial of "` `+ num``            ``+ ``" is "` `+ factorial(``5``));``    ``}``}`

## Python3

 `# Python 3 program to find ``# factorial of given number`` ` `# Function to find factorial of given number``def` `factorial(n):``    ``if``(n ``=``=` `0``):``       ``return` `1``    ``i ``=` `n``    ``fact ``=` `1``     ` `    ``while``(n ``/` `i !``=` `n):``        ``fact ``=` `fact ``*` `i``        ``i ``-``=` `1``         ` `    ``return` `fact`` ` `# Driver Code``num ``=` `5``;``print``(``"Factorial of"``, num, ``"is"``,``factorial(num))``  ` `# This code is contributed by Smitha Dinesh Semwal`

## C#

 `// C# program to find``// factorial of given number``using` `System;`` ` `class` `Test {``    ``// Method to find factorial``    ``// of given number``    ``static` `int` `factorial(``int` `n)``    ``{``        ``if``(n == 0)``            ``return` `1;``        ``int` `i = n, fact = 1;``        ``while` `(n / i != n) {``            ``fact = fact * i;``            ``i--;``        ``}``        ``return` `fact;``    ``}`` ` `    ``// Driver method``    ``public` `static` `void` `Main()``    ``{``        ``int` `num = 5;``        ``Console.WriteLine(``            ``"Factorial of "` `+ num``            ``+ ``" is "` `+ factorial(5));``    ``}``}`

Output :
`Factorial of 5 is 120`

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

One line Solution (Using Ternary operator):

## C++

 `// C++ program to find factorial of given number``#include `` ` `int` `factorial(``int` `n)``{``    ``// single line to find factorial``    ``return` `(n == 1 || n == 0) ? 1 : n * factorial(n - 1);``}`` ` `// Driver Code``int` `main()``{``    ``int` `num = 5;``    ``printf``(``"Factorial of %d is %d"``, num, factorial(num));``    ``return` `0;``}`` ` `// This code is contributed by  Rithika palaniswamy.`

## Java

 `// Java program to find factorial``// of given number``class` `Factorial {`` ` `    ``int` `factorial(``int` `n)``    ``{`` ` `        ``// single line to find factorial``        ``return` `(n == ``1` `|| n == ``0``) ? ``1` `: n * factorial(n - ``1``);``    ``}`` ` `    ``// Driver Code``    ``public` `static` `void` `main(String args[])``    ``{``        ``Factorial obj = ``new` `Factorial();``        ``int` `num = ``5``;``        ``System.out.println(``            ``"Factorial of "` `+ num``            ``+ ``" is "` `+ obj.factorial(num));``    ``}``}`` ` `// This code is contributed by Anshika Goyal.`

## Python3

 `# Python 3 program to find``# factorial of given number`` ` `def` `factorial(n):`` ` `    ``# single line to find factorial``    ``return` `1` `if` `(n ``=``=` `1` `or` `n ``=``=` `0``) ``else` `n ``*` `factorial(n ``-` `1``) `` ` ` ` `# Driver Code``num ``=` `5``print` `(``"Factorial of"``, num, ``"is"``,``      ``factorial(num))`` ` `# This code is contributed``# by Smitha Dinesh Semwal.`

## C#

 `// C# program to find factorial``// of the given number``using` `System;`` ` `class` `Factorial {`` ` `    ``int` `factorial(``int` `n)``    ``{`` ` `        ``// single line to find factorial``        ``return` `(n == 1 || n == 0) ? 1 : n * factorial(n - 1);``    ``}`` ` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``Factorial obj = ``new` `Factorial();``        ``int` `num = 5;`` ` `        ``Console.WriteLine(``            ``"Factorial of "` `+ num``            ``+ ``" is "` `+ obj.factorial(num));``    ``}``}`` ` `// This code is contributed by vt_m.`

## PHP

 ``

Output:

```Factorial of 5 is 120
```

The above solutions cause overflow for small numbers. Please refer factorial of large number for a solution that works for large numbers.

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up