Program to calculate Factorial of a number

posted on 11 May 2026 , updated on 11 May 2026
arithmetic

The factorial of a number is a fundamental concept in mathematics, crucial for calculating permutations, combinations, and probabilities. In Python, there are several distinct ways to calculate a factorial, ranging from traditional iterative loops to elegant recursive functions, and finally to highly optimized built-in modules. Let's master each approach.

1. Conceptual Understanding: What is a Factorial?

The factorial of a non-negative integer n, denoted by n!, is the product of all positive integers less than or equal to n.

Mathematical Example

Let's calculate the factorial of 5 (written as 5!):

  • 5! = 5 × 4 × 3 × 2 × 1 = 120
  • 4! = 4 × 3 × 2 × 1 = 24

Important Note: Factorials are only defined for positive integers and zero. They do not exist for negative numbers.

2. Method 1: Using an Iterative Loop (The Standard Way)

The most straightforward way to calculate a factorial is to use a for loop. We initialize a variable to 1, and then iteratively multiply it by every number up to n. We also include safety checks for negative numbers and zero.

# Method 1: finding factorial using a for loop
num = int(input("Enter a number: "))

factorial = 1

# Check if the number is negative, positive or zero
if num < 0:
    print("Sorry, factorial does not exist for negative numbers.")
elif num == 0:
    print("The factorial of 0 is 1.")
else:
    for i in range(1, num + 1):
        factorial = factorial * i
    print(f"The factorial of {num} is {factorial}")

3. Method 2: Using Recursion (The Elegant Way)

Recursion occurs when a function calls itself. A factorial is perfectly suited for recursion because n! = n × (n-1)!. This creates a chain of multiplications that stops when it hits our "base case" of 1.

# Method 2: finding factorial using a recursive function
def recur_factorial(n):
    # Base case: 1! = 1
    if n == 1 or n == 0:
        return 1
    # Recursive step
    else:
        return n * recur_factorial(n-1)

num = 5

if num < 0:
    print("Sorry, factorial does not exist for negative numbers.")
else:
    print(f"The factorial of {num} is {recur_factorial(num)}")
⚠️ RecursionError Alert
While recursive functions are elegant, Python has a strict recursion limit (usually 1000) to prevent infinite loops from crashing your system. If you try to calculate recur_factorial(1000), Python will throw a RecursionError: maximum recursion depth exceeded.

4. Method 3: Using math.factorial() (The Pythonic Way)

For real-world applications, you rarely write your own factorial logic. Python’s standard math module includes a highly optimized factorial() function written in C. It is faster, safer, and handles all edge cases (like negative numbers and floats) automatically.

# Method 3: using the built-in math module
import math

num = 6

try:
    result = math.factorial(num)
    print(f"The factorial of {num} is {result}")
except ValueError:
    print("Factorial only accepts non-negative integers!")

💡 Mind-Blowing Facts About Factorials

  • Zero Factorial is 1: Mathematically, 0! = 1. This is known as an "empty product" convention. It makes sense because there is exactly one way to arrange zero objects (by doing nothing).
  • Astronomical Growth: Factorials grow faster than exponential functions. While 10! is a manageable 3,628,800, 100! results in a number with 158 digits! Python's integers have arbitrary precision, meaning it can calculate 1000! without overflowing, unlike languages like C++ or Java.
  • The Deck of Cards Phenomenon: A standard deck has 52 cards. The number of possible shuffles is 52! (about 8.06 × 1067). This number is so vast that any time you properly shuffle a deck, it is almost a mathematical certainty that no one in the history of the universe has ever held a deck in that exact same order!

Related Programs

...

A Python program to calculate the HCF of two numbers.

...

A Python program to calculate the LCM of two numbers.

...

A Python program to generate Fibonacci Series.

...

A Python program to check if a number is Prime.

...

A Python program to calculate the factorial of a number.

Search
Download PYTHON
Download Python on your system from python.org downloads section