# Python Program: Factorial of a Number

The factorial of a given positive integer $n$ is defined as the product of all integers from $n$ down to 1.

The factorial of $n$ is denoted by $n!$

$n! = n\times(n-1)\times ... \times1$

For example,

$4! = 4\times3\times2\times1 = 24$

We calculate factorials only of positive integers and 0, or whole numbers. Factorials of negative numbers are undefined. Also, note that $0! = 1$.

Below is the Python program to compute the factorial of a given number $n$. Here, $n$ is pre-assigned the value $7$, so we basically are computing $7!$

` ````
n = 7
factorial = 1
if n < 0:
print("Factorial is not defined for -ve numbers")
elif n == 0:
print(n, "! = ", 1)
else:
for i in range(1,n + 1):
factorial = factorial*i
print(n ,"! = ", factorial)
```

Upon execution, the above program gives the factorial of $7$ as

` ````
7! = 5040
```

We will now modify the above Python code to accept $n$ dynamically; we replace the top line of code where $n$ was previously pre-assigned with some value with `int(input("n = "))`

.

` ````
n = int(input("n = "))
factorial = 1
# check if the number is negative, positive or zero
if n < 0:
print("Factorial is not defined for -ve numbers")
elif n == 0:
print(n, "! = ", 1)
else:
for i in range(1,n + 1):
factorial = factorial*i
print(n ,"! = ", factorial)
```

On running the program, the prompt to enter a value of $n$ appears.

` ````
n =
```

And then you enter some value for $n$ and it gives its computed factorial.

Now there exists a powerful math engine called Wolfram Alpha, designed by Stephen Wolfram, which you can use to cross-check the values of factorial of bigger numbers.

Here we compute the factorial of 50 using Wolfram Alpha online.

# Using Recursive Function

We can also use a recursive function to compute the factorial of a number. Below we define a function called `factorial()`

which computes the factorial of an entered number $n$ recursively.

` ````
def factorial(m):
if m == 1:
return m
else:
return m*factorial(m-1)
n = int(input("n = "))
if n < 0:
print("Factorial is not defined for -ve numbers")
elif n == 0:
print(n, "! = ", 1)
else:
print(n ,"! = ", factorial(n))
```

For $n = 12$, it gives the following value

` ````
n = 12
12 ! = 479001600
```