To use a while loop to find the factorial of a number in Python:
- Ask a number input.
- Initialize the result to 1.
- Start a loop where you multiply the result by the target number.
- Reduce one from the target number in each iteration.
- End the loop once the target number reaches 1.
Here is how it looks in code:
def factorial(n): num = 1 while n >= 1: num = num * n n = n - 1 return num
Let’s test that it works:
f = factorial(5) print(f)
Output:
120
There you have it!
To learn more about factorials and some alternative ways to calculate the factorial, please read along.
What Is the Factorial of a Number in Mathematics
In mathematics, the factorial is the product of all positive whole numbers less than or equal to a target number.
The factorial is denoted with an exclamation mark.
For example, let’s calculate the factorial of 5:
5! = 5 x 4 x 3 x 2 x 1 = 120
In layman’s terms, the factorial answers the question “In how many ways can you form a queue of n persons?”.
Recursion and Factorial in Python
In programming, recursion refers to a function that calls itself.
Usually, calculating the factorial acts as an introduction to recursion in programming courses.
This is because the factorial can be expressed recursively as:
n! = n x (n – 1)!
In this expression, there is a factorial operator (!) on both sides.
Essentially, this expression says “Factorial of n equals to n times the factorial of n – 1”.
Let’s use this as a basis to formulate a recursive factorial function in Python:
def factorial(n): if (n==1 or n==0): return 1 else: # n! = n x (n - 1)! return n * factorial(n - 1)
In this function:
- If the target number is 0 or 1, we are going to return 1, because the factorial of 0 or 1 is 1.
- If the target number is not 0 or 1, we are going to multiply it by the factorial of 1 less than the target.
Now you can test this code to make sure it works:
print(factorial(5))
Output:
120
Alternatives to Calculating the Factorial in Python
You now know what is the factorial of a number and how it is commonly calculated using recursion.
But there are some alternatives, that is:
- A built-in function
- While loop
- For loop
Let’s go through each of these approaches next.
1. Built-In Factorial Function in Python
Unless you are practicing your Python skills, you should use the built-in factorial function from the math module.
For example:
from math import factorial print(factorial(5))
Output:
120
2. While Loop Factorial in Python
Any recursive function can be written as an iterative one.
In other words, you can use a regular loop instead of recursion.
Although, the feasibility to convert a recursive function into an iterative function varies based on the complexity of the function.
When talking about recursive factorial, it is trivial to convert it into an iterative one using a while loop.
All you need to do is:
- Create a loop where you start a result from 1
- Subtract 1 from the target number
- Multiply the result by it.
- Do this until the target reaches 1 and you have successfully computed the factorial.
Here is how it looks in code:
def factorial(n): num = 1 while n >= 1: num = num * n n = n - 1 return num
3. For Loop Factorial in Python
You can also convert a recursive factorial function to one that uses a for loop in Python.
To do this:
- Specify a target number.
- Set the result at 1.
- Start a for loop from 1 to the target number + 1.
- Multiply the result by each number in this range.
- Return the result.
Here is how it looks in code:
def factorial(n): num = 1 for i in range(1, n + 1): num = num * i return num
Example run:
print(factorial(5))
Output:
120
Conclusion
Today you learned how to calculate the factorial of a number using a while loop in Python.
To recap, the factorial of a number is a whole number multiplied by all positive whole numbers less than it.
Commonly, you see factorial being calculated with a recursion. But it is just as fine to calculate the factorial using an iterative approach, that is, a while or a for loop.
If you do not need to implement the factorial yourself, use the built-in math.factorial function in Python.
Thanks for reading.
Happy coding!