Python Calculate Factorial of a Number

Minh Vu

By Minh Vu

Updated Oct 20, 2023

Figure: Python Calculate Factorial of a Number

Disclaimer: All content on this website is derived directly from my own expertise and experiences. No AI-generated text or automated content creation tools are used.

In this tutorial, I will show you how to find the factorial of a number in Python using 3 different methods.

Actually, the algorithms is similar to another tutorial about Fibonacci sequence I wrote before, which uses recursion and for loop to find the Fibonacci sequence.

Contents

What is Factorial of a Number?

Factorial of a number is the product of all integers from 1 to that number.

For example, the factorial of 5 is 1 x 2 x 3 x 4 x 5 = 120.

How to Find Factorial of a Number in Python?

To find the factorial of a number in Python, you can:

  • Use the built-in function math.factorial()
  • Use recursion
  • Use a for loop

The first method is straightforward as Python already has a built-in function for this.

The second and third methods are for those who want to understand what it does behind the scene.

Using math.factorial()

The easiest way to calculate the factorial of a number is to use the math.factorial() function.

Create a file called main.py and add the following code:

import math while True: if n <= 0: print("Stop") break n = int(input("Enter a number: ")) print(math.factorial(n))

The above code will ask to enter a number until it reaches a negative integer.

Let's test it out by running the following command:

console
python main.py

You will get:

console
Enter a number: 5 120 Enter a number: 10 3628800 Enter a number: -1 Stop

Using Recursion

Recursion is an advanced technique that can be used to find the factorial of a number.

Remember that for recursion to work, we should have a base case and a recursive case.

From the definition of the factorial, we can see that:

  • Base case: factorial(0) = 1
  • Recursive case: factorial(n) = n * factorial(n - 1)

Let's implement this in Python:

def factorial(n): if n == 0: return 1 return n * factorial(n - 1) while True: n = int(input("Enter a number: ")) if n < 0: print("Stop") break print(factorial(n))

Running the above code, we get the same result:

console
Enter a number: 20 2432902008176640000 Enter a number: 6 720 Enter a number: -1 Stop

This method is more complicated and less efficient as we should avoid using recursion as much as possible. So let's move to the next method.

Using For Loop

The last method is to use a for loop to calculate the factorial of a number in Python.

def factorial(n): result = 1 for i in range(1, n + 1): result *= i return result while True: n = int(input("Enter a number: ")) if n < 0: print("Stop") break print(factorial(n))

In this case, we converted the recursion into a for loop.

Conclusion

I have shown you 3 ways to find the factorial of a number in Python.

  • Using math.factorial()
  • Using recursion
  • Using a for loop

In practice, I recommend using the math.factorial() function as it's the easiest and most efficient way.

Minh Vu

Minh Vu

Software Engineer

Hi guys 👋, I'm a developer specializing in Elastic Stack and Next.js. My blog shares practical tutorials and insights based on 3+ years of hands-on experience. Open to freelance opportunities — let's get in touch!

Comments

Be the first to comment!

Leave a Comment

Receive Latest Updates 📬

Get every new post, special offers, and more via email. No fee required.