Write a recursive C/C++ and java program to calculate factorial of a given positive number.

The factorial of a non-negative integer n is the product of all positive integers less than or equal to n. It is denoted by n!. There are n! different ways to arrange n distinct objects into a sequence.

For example,

The value of 5! is 120 as

5! = 1 x 2 x 3 x 4 x 5 = 120

The value of 0! is 1

The problem can be recursively defined as –

n! = | n * factorial(n – 1) if n > 0

| 1 if n = 0

For example,

0! = 1! = 1

2! = (1) x 2 = 1! x 2 = 2

3! = (1 x 2) x 3 = 2! x 3 = 6

4! = (1 x 2 x 3) x 4 = 3! x 4 = 24

5! = (1 x 2 x 3 x 4) x 5 = 4! x 5 = 120

6! = (1 x 2 x 3 x 4 x 5) x 6 = 5! x 6 = 720

## C

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <stdio.h> // Recursive function to calculate factorial of a number unsigned long factorial(int n) { // base case: if n is 0 or 1 if (n < 1) return 1; // use the recurrence relation return n * factorial(n - 1); } // Program to calculate factorial of a number int main() { int n = 5; printf("The Factorial of %d is %lu", n, factorial(n)); return 0; } |

`Output: `

The Factorial of 5 is 120

## Java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Factorial { // Recursive function to calculate factorial of a number public static int factorial(int n) { // base case: if n is 0 or 1 if (n < 1) return 1; // use the recurrence relation return n * factorial(n - 1); } // Program to calculate factorial of a number public static void main(String[] args) { int n = 5; System.out.println("The Factorial of " + n + " is " + factorial(n)); } } |

`Output: `

The Factorial of 5 is 120

The time complexity of above solution is O(n) and auxiliary space used by the program is O(n) for call stack.

We can also write above recursive program in a single line as shown below –

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <stdio.h> // Recursive function to calculate factorial of a number unsigned long factorial(int n) { return (n < 1) ? 1 : n * factorial(n - 1); } // Program to calculate factorial of a number int main() { int n = 6; printf("The Factorial of %d is %lu", n, factorial(n)); return 0; } |

`Output: `

The Factorial of 6 is 720

**Also See: ** Iterative program to find factorial of a number

**Exercise: ** Efficiently print factorial series in a given range.

**Thanks for reading.**

Please use ideone or C++ Shell or any other online compiler link to post code in comments.

Like us? Please spread the word and help us grow. Happy coding 🙂

## Leave a Reply