**Problem Statement:** Given a number **X,** print its factorial.

To obtain the factorial of a number, it has to be multiplied by all the whole numbers preceding it. More precisely X! = X*(X-1)*(X-2) … 1.

Note: X is always a positive number.

**Examples:**

Example 1:Input:X = 5Output:120Explanation:5! = 5*4*3*2*1Example 2:Input:X = 3Output:6Explanation:3!=3*2*1

**Solution**

** Disclaimer**:

*Don’t jump directly to the solution, try it out yourself first.*

**Solution 1: Iterative**

**Approach**:

Since the factorial of X will be the product of the number itself and all its preceding numbers we can run loop i, from 1 to X. In every iteration current i, is multiplied with the product so far.

**Code:**

## C++ Code

```
#include <iostream>
using namespace std;
int factorial(int X) {
int ans = 1;
for (int i = 1; i <= X; i++) {
ans = ans * i;
}
return ans;
}
int main() {
int X = 5;
int result = factorial(X);
cout << "The factorial of " << X << " is " << result;
}
```

**Output:** The factorial of 5 is 120

**Time Complexity: O(n)**

**Space Complexity: O(1)**

## Java Code

```
public class Main {
static int factorial(int X) {
int ans = 1;
for (int i = 1; i <= X; i++) {
ans = ans * i;
}
return ans;
}
public static void main(String[] args) {
int X = 5;
int result = factorial(X);
System.out.println("The factorial of " + X + " is " + result);
}
}
```

**Output:** The factorial of 5 is 120

**Time Complexity: O(n)**

**Space Complexity: O(1)**

**Solution 2: Recursive**

**Approach**: To apply recursion we have to decompose the larger problem into a smaller problem. In the process of decomposition, the smaller problem should eventually lead to the base case.

Factorial of X can also be written as X*(X-1)!

Again (X-1)! = (X-1)*(X-2)!

Therefore a smaller instance of the same problem contributes to the original larger problem.

Now that we have understood the basic thought process let’s understand how to solve it:-

- Make a function to compute factorial that accepts an integer as parameter.
- Continue to recursively call (X-1)!
- Stop when X = 0. Factorial of 0 is 1.Since we already know the answer to this sub problem this will be our base case.

**Code:**

## C++ Code

```
#include <iostream>
using namespace std;
int factorial(int X) {
if (X == 0) {
return 1;
}
return X * factorial(X - 1);
}
int main() {
int X = 5;
int result = factorial(X);
cout << "The factorial of " << X << " is " << result;
}
```

**Output:** The factorial of 5 is 120

**Time Complexity: O(n) **

**Space Complexity: ** **O(1)**

## Java Coding

```
public class Main {
static int factorial(int X) {
if (X == 0) {
return 1;
}
return X * factorial(X - 1);
}
public static void main(String[] args) {
int X = 5;
int result = factorial(X);
System.out.println("The factorial of " + X + " is " + result);
}
}
```

**Output:** The factorial of 5 is 120

**Time Complexity: O(n) **

**Space Complexity: ** **O(1)**

Special thanks toplease check out this articlefor contributing to this article on takeUforward. If you also wish to share your knowledge with the takeUforward fam,Somparna Chakrabarti