Вычисление факториала на Python

Факториал числа – это произведение всех натуральных чисел меньше или равного этому числу. Обозначение факториала: n!

n! = 1 * 2 * 3 … (n — 1) * n

Например, 5! = 120, 7! = 5040 и так далее. Важно понимать, что 0! = 1, и 1! = 1

Вычисление факториала с помощью Python

Пайтон предоставляет ряд возможностей вычисления n! К примеру:

  1. Функция math.factorial;
  2. Цикл while
  3. Функция def
  4. С применением рекурсии

Рассмотрим алгоритмы относительно быстрого вычисления факториала.

Функция для факториала в 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.

Образовательный портал 3TY.RU
Adblock
detector