Факториал неотрицательного целого n — произведение чисел от 1 до n; по определению 0! = 1. Итеративная реализация избегает ограничения глубины рекурсии.
Реализация функции для расчёта факториала
Факториал неотрицательного целого n — произведение чисел от 1 до n; по определению 0! = 1. Итеративная реализация избегает ограничения глубины рекурсии.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, которая вычисляет факториал переданного ей числа.
def factorial(n):
# ваш код здесь
pass
Ответ
Факториал неотрицательного целого n — произведение чисел от 1 до n; по определению 0! = 1. Итеративная реализация избегает ограничения глубины рекурсии.
def factorial(n):
if isinstance(n, bool) or not isinstance(n, int):
raise TypeError('n должно быть целым числом')
if n < 0:
raise ValueError('n должно быть неотрицательным')
result = 1
for value in range(2, n + 1):
result *= value
return result
factorial(5) вернёт 120, factorial(0) — 1. Выполняется O(n) умножений, но стоимость умножения растёт с размером результата: Python использует целые произвольной точности. Для прикладного кода обычно достаточно math.factorial.