How to Calculate Factorial in Python: 3 Easy Methods

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Factorial Basics in Python

A factorial is a fundamental mathematical operation widely used in combinatorics, probability theory, cryptography, and algorithms. In Python, calculating a factorial is a straightforward task with several approaches: using loops, recursion, or built-in libraries.

This article covers different methods for computing the factorial of a number in Python. We'll compare each approach, analyze their pros and cons, and show you how to avoid common pitfalls when working with factorials.

Mathematical Definition of Factorial

The factorial of a number n is denoted as n! and is the product of all positive integers from 1 to n.

Factorial Examples

Here are some basic examples:

  • 0! = 1 (defined by convention)
  • 1! = 1
  • 3! = 1 × 2 × 3 = 6
  • 5! = 1 × 2 × 3 × 4 × 5 = 120
  • 6! = 1 × 2 × 3 × 4 × 5 × 6 = 720

Pay special attention to the factorial of zero. By mathematical convention, 0! equals one. While this may seem counterintuitive, it simplifies many formulas and ensures consistency in combinatorial calculations.

Methods for Calculating Factorial in Python

Iterative Method

The iterative approach using a loop is the simplest and most beginner-friendly method.

def factorial_iterative(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

print(factorial_iterative(5))  # Output: 120

Pros of the Iterative Method

  • Easy to implement and understand
  • No risk of stack overflow
  • High performance for large numbers
  • Controlled memory usage

Cons of the Iterative Method

  • Less elegant code compared to recursion
  • May feel less mathematically natural

Recursive Method

Recursion is when a function calls itself. The recursive factorial calculation directly mirrors the mathematical definition.

def factorial_recursive(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial_recursive(n - 1)

print(factorial_recursive(5))  # Output: 120

Pros of the Recursive Method

  • Elegant and mathematically intuitive
  • Easy to read and understand
  • Direct reflection of the mathematical definition
  • Concise code

Cons of the Recursive Method

  • Python's recursion depth limit (default ~1000 calls)
  • Risk of RecursionError for large values
  • Extra memory overhead from the call stack
  • Slower performance compared to iteration

Using the Built-in math Library

Python offers a ready-made solution with the math.factorial() function, optimized for fast and efficient factorial calculation.

import math

print(math.factorial(5))  # Output: 120
print(math.factorial(10))  # Output: 3628800

Pros of Using math.factorial

  • High execution speed
  • No need to write your own implementation
  • Optimized code at the interpreter level
  • Handles very large numbers
  • Built-in edge case handling

Cons of Using math.factorial

  • Requires importing the math module
  • Less educational if you're learning the logic behind factorials
  • No control over the internal algorithm

Blogs

Book Recommendations