Факториалы — это важное понятие в математике, которое часто используется при работе с перестановками и комбинациями, а также в других областях математического анализа.
Факториал числа n представляет собой произведение всех натуральных чисел, которые меньше или равны n. Обозначается он как «n!».
В этой статье мы рассмотрим три различных способа вычисления факториала числа в языке программирования Python.
Итеративный подход
Вот как это можно сделать, используя простой итеративный подход. Ниже представлена простая программа для вычисления факториала числа на языке Python.
def factorial_iterative(n): # Base case: factorial of 0 is 1 if n == 0: return 1 else: factorial = 1 for i in range(1, n + 1): factorial *= i return factorial
В этом коде:
- Сначала мы проверяем, равно ли входное число нулю. Если да, мы возвращаем 1, поскольку факториал нуля определяется как единица.
- Если число не равно нулю, мы инициализируем факториал переменной значением 1.
- Затем мы запускаем цикл for от 1 до введенного номера включительно. Для каждого числа в этом диапазоне мы умножаем текущее значение факториала на это число.
- Наконец, мы возвращаем полученный факториал.
Например, факториал 5 с использованием этой функции будет рассчитываться как:
print(factorial_iterative(5)) # Output: 120
Посмотрите на скриншот ниже:
Эта функция работает хорошо, но есть и другой способ вычисления факториала, который может показаться более понятным для тех, кто знаком с рекурсией — это рекурсивный подход.
Рекурсивный подход
Вот рекурсивная функция на Python для вычисления факториала числа:
def factorial_recursive(n): # Base case: factorial of 0 is 1 if n == 0: return 1 else: return n * factorial_recursive(n - 1)
В этом коде:
- Мы снова начинаем с проверки, является ли входное число нулем, и если да, то возвращаем 1.
- Если число не равно нулю, мы умножаем число на факториал на единицу меньше числа. Это делается путем рекурсивного вызова функции Factorial_recursive с аргументом n — 1.
Например, факториал 5 с использованием этой функции будет рассчитываться как:
print(factorial_recursive(5)) # Output: 120
Хвостовой рекурсивный подход
Вот код для вычисления факториала числа в Python с использованием рельсового рекурсивного подхода.
def factorial_tail_recursive(n, accumulator=1): # Base case: factorial of 0 is 1 if n == 0: return accumulator else: return factorial_tail_recursive(n - 1, n * accumulator)
В этом коде:
- Функция принимает два аргумента: число, для которого мы хотим вычислить факториал, и «аккумулятор», который отслеживает произведение на данный момент.
- Если число равно нулю, функция возвращает аккумулятор, который к настоящему времени умножен на каждое число из исходного ввода до 1.
- Если число не равно нулю, функция выполняет рекурсивный вызов, передавая на единицу меньше текущего числа и произведение текущего числа и текущего аккумулятора.
Например, факториал 5 с использованием этой функции будет рассчитываться как:
print(factorial_tail_recursive(5)) # Output: 120
Заключение
В этом уроке Python мы узнали, как вычислить факториал числа в Python, используя как итеративные, так и рекурсивные методы.
Вам также может понравиться:
- Как удалить повторяющиеся значения из словаря Python
- добавить нули перед числом в Python
- Программа Python для двоичного поиска