/
Вопросы и ответы
/
Python
/

Какая функция нужна для вычисления факториала в Python?

Какая функция нужна для вычисления факториала в Python?

4 года назад

Andrey Moshkov

Ответы

1

Для вычисления факториала в Python можно использовать функцию math.factorial() из модуля math или написать собственную функцию для вычисления факториала. Давай рассмотрим оба варианта.

Использование функции math.factorial():

1
2
3
4
5
6
import math

n = 5
result = math.factorial(n)
print("Факториал числа", n, "равен", result)
# => Факториал числа 5 равен 120

Можно написать собственную функции для вычисления факториала, которая вычисляет факториал числа n путём умножения числа на факториал предыдущего числа (n-1). Базовый случай - факториал 0 равен 1.

1
2
3
4
5
6
7
8
9
10
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

n = 5
result = factorial(n)
print("Факториал числа", n, "равен", result)
# => Факториал числа 5 равен 120

3 года назад

Maksim Litvinov

0

Для вычисления факториала числа существует функция factorial() в модуле math:

1
2
3
4
5
import math

print(math.factorial(9)) # => 362880
print(math.factorial(6)) # => 720
print(math.factorial(12)) # => 479001600

4 года назад

Владимир Устянивский

0

Факториал считает функция math.factorial():

1
2
3
import math

print(math.factorial(5))  # => 120

Факториал n — произведение всех чисел от 1 до n: 5! = 1 · 2 · 3 · 4 · 5 = 120. Факториал нуля по определению равен 1.

Через цикл

1
2
3
4
5
6
7
def factorial(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

print(factorial(5))  # => 120

Через рекурсию

1
2
3
4
5
6
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # => 120

Рекурсия наглядно повторяет формулу n! = n · (n − 1)!. На больших числах она упирается в лимит глубины рекурсии: по умолчанию около 1000 вызовов. factorial(5000) вызовет RecursionError. Цикл и math.factorial такого ограничения не имеют.

Факториал введённого числа

1
2
3
4
import math

n = int(input("Введите число: "))
print(math.factorial(n))

Большие числа

Python работает с целыми числами любого размера:

1
2
3
4
import math

print(math.factorial(20))             # => 2432902008176640000
print(len(str(math.factorial(100))))  # => 158 — цифр в 100!

Ошибки

1
2
math.factorial(-1)
# ValueError: factorial() not defined for negative values

Факториал определён только для целых неотрицательных чисел. math.factorial(2.5) тоже вызовет ошибку.

Где встречается факториал

  • Перестановки: сколькими способами можно расставить n предметов — n!.
  • Сочетания: сколькими способами выбрать k предметов из n. В Python для этого есть math.comb(n, k).
  • Учебные задачи на рекурсию: факториал — первый пример во многих курсах.
1
2
3
4
import math

print(math.perm(5))     # => 120 — перестановки 5 предметов
print(math.comb(5, 2))  # => 10 — выбрать 2 из 5

Функции, циклы и рекурсию разбирают в бесплатном курсе «Основы Python», комбинаторику — на курсе «Дискретная математика».

16 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845