Given an integer n, the task is to compute its factorial, i.e., the product of all positive integers from 1 to n. Factorial is represented as n! and is commonly used in mathematics, permutations and combinatorics. For Example:
Input: n = 6
Output: 720
Explanation: 6! = 6 × 5 × 4 × 3 × 2 × 1 = 720
Let's explore different methods to find the factorial of a number in Python.
Using math.factorial()
This method computes the factorial using Python’s built-in factorial() function, which performs the entire calculation internally without requiring loops or recursion in user code.
import math
n = 6
print(math.factorial(n))
Output
720
Using NumPy’s np.prod()
NumPy performs multiplication through optimized C-level operations. It computes the factorial by multiplying all numbers from 1 to n in a single vectorized step using np.prod().
import numpy as np
n = 6
print(np.prod(range(1, n+1)))
Output
720
Explanation:
- range(1, n+1) generates numbers from 1 through n.
- np.prod(...) multiplies all values in the sequence.
Using an Iterative For Loop
This method calculates factorial by manually multiplying the numbers from 1 to n inside a for loop.
n = 6
f = 1
for i in range(1, n+1):
f *= i
print(f)
Output
720
Explanation:
- f = 1 starts with an initial multiplication value.
- f *= i multiplies f with each number i from 1 to n.
- Produces the factorial after the loop completes.
Using a Recursive Function
This approach follows the mathematical definition of factorial by repeatedly calling the function with decreasing values until reaching the base case.
def fact(n):
return 1 if n <= 1 else n * fact(n-1)
print(fact(6))
Output
720
Explanation:
- n <= 1 base condition returning 1.
- n * fact(n-1) multiplies the current number with the factorial of the previous number.