Вычисление факториала на Python
Факториал числа – это произведение всех натуральных чисел меньше или равного этому числу. Обозначение факториала: n!
n! = 1 * 2 * 3 … (n — 1) * n
Например, 5! = 120, 7! = 5040 и так далее. Важно понимать, что 0! = 1, и 1! = 1
Вычисление факториала с помощью Python
Пайтон предоставляет ряд возможностей вычисления n! К примеру:
- Функция math.factorial;
- Цикл while
- Функция def
- С применением рекурсии
Рассмотрим алгоритмы относительно быстрого вычисления факториала.
Функция для факториала в Python
Начиная с версии 2.6, Пайтон поддерживает математические функции math. Одна из них способна вычислить факториал целого, неотрицательного числа.
Пример:
Import math
math.factorial(5)
Функция выведет 120 .
Вычисление с применением while
Создаём условный цикл с использованием while. Не забывайте ставить отступы в теле цикла!
# Вычисление факториала с помощью цикла while
num = int(input(«Введите число, факториал которого нужно найти: «))
# принимает входное число от пользователя
factorial = 1; # объявление переменной factorial, присвоение значения 1
# проверка числа: меньше/больше нуля или ноль
if num < 0:
print(«Нельзя вычислить факториал отрицательного числа»);
elif(num == 0):
print(«Факториал 0 равен 1»);
else:
while(num>0):
factorial= factorial * num
num = num — 1
print(«Факториал данного числа равен: «)
print(factorial)
Функция def
Функция – это своего рода программа в теле программы. В ней прописан повторяющийся код, который вызывается, когда он нужен. Это позволяет избежать многократного повторения одного и того же фрагмента кода. В пайтоне функцию создаёт ключевое слово def.
Код упрощён: в нём нет проверки на то, что пользователь введёт отрицательное число.
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
n=int(input(«Введите число, факториал которого надо вычислить: «))
print(factorial(n))
Нахождение факториала рекурсией
Напишем новую функцию, уже с явной рекурсией (функция определяет и создаёт саму себя).
def recur_factorial(n):
if n == 1:
return n
else:
return n*recur_factorial(n-1)
# Запрос данных у пользователя
num = int(input(«Введите число: «))
# проверка на отрицательное число
if num < 0:
print(«Нельзя вычислить факториал отрицательного числа»)
elif num == 0:
print(«Факториал 0 равен 1»)
else:
print(«Факториал»,num,»равен»,recur_factorial(num))
Находим двойной факториал
Двойной факториал — это произведение всех натуральных чисел в интервале от 1 до n, имеющих ту же четность, что и n. Упрощённый код:
def doublefactorial(n):
if (n == 0 or n == 1):
return 1;
return n * doublefactorial(n — 2);print(«Двойной факториал равен»,
doublefactorial(5));
Обратный факториал
При поиске факториала мы последовательно умножаем цифры. В обратной операции мы последовательно делим. Функция должна содержать следующий алгоритм: последовательно делим число на 1, 2, 3, 4 и. т. д., до тех пор, пока не получим 1 и тогда возвращаем последний делитель.
Заключение
В этой статье мы вспомнили понятие факториала из старшей школы и научились реализовывать алгоритм его вычисления на языке Python.