Факториал (!) числа n — это произведение всех положительных чисел, меньших или равных n.
Уравнение
Факториал числа определяется как:
f a c t o r i a l ( n ) = n ∗ f a c t o r i a l ( n — 1 ) factorial (n) = n * factorial (n-1) factorial (n) = n ∗ factorial (n − 1)
o r или или
f a c t o r i a l ( n ) = n ∗ ( n — 1 ) ∗ ( n — 2 ) . . . ∗ 1 factorial (n) = n * (n-1) * (n-2) … * 1 factorial (n) = n ∗ ( n − 1) ∗ (n − 2) … ∗ 1
Примечание: Факториал 0 равен 1.
Пример
Чтобы вычислить факториал 4, взгляните на следующую иллюстрацию:
4 ! = 4 ∗ 3 ∗ 2 ∗ 1 4! = 4 * 3 * 2 * 1 4! = 4 ∗ 3 ∗ 2 ∗ 1
Подходы к вычислению факториала числа в Python
В Python есть два подхода к вычислению факториала числа:
- Итерационный метод
- Рекурсивный метод
Итерационный метод
Следующий код объясняет, как вычислить факториал числа, используя итеративный подход:
def factorial (n): fact = 1 for num in range (2, n + 1): fact * = num return fact
Итерационный подход работает, устанавливая базовое значение в 1 1 1. Для каждого цикла метод умножается на базовое значение, пока цикл for
не завершится и вы не получите окончательное значение факториала..
Рекурсивный подход
Рекурсивный подход — это когда функция вызывает себя снова и снова до некоторого условия остановки. Он состоит из двух частей:
Базовый случай
Здесь останавливается рекурсия
Рекурсивный случай
Это тот случай, когда функция вызывает себя снова и снова, пока не будет достигнуто базовое условие..
f a c t o r i а l ( 4 ) = 4 ∗ f a c t o r i а l(3) factorial (4) = 4 * factorial (3) factorial (4) = 4 ∗ factorial (3)
f a c t о r i a l ( 3 ) = 3 ∗ f a c t о r i a l ( 2 ) factorial (3) = 3 * factorial (2 ) factorial (3) = 3 ∗ factorial (2)
f a c t o r i a l ( 2 ) = 2 ∗ f a c t o r i а l ( 1 ) factorial(2)=2*factorial(1) factorial (2) = 2 ∗ factorial (1)
f a c t o r i a l ( 1 ) = 1 ∗ f a c t o r i a l ( 0 ) факториал (1) = 1 * факториал (0) factorial (1) = 1 * factorial (0)
На следующем рисунке объясняется, как вычислить факториал число с использованием рекурсии в Python:
1 из 10
def factorial (n): if n == 1: #base case return n else: return n * factorial (n-1) # рекурсивный casenumber = 4if number