Факториал неотрицательного целого числа — произведение чисел от 1 до n, а 0! = 1. Отрицательные и нецелые аргументы для этой задачи отклоняются.
Реализация функции для вычисления факториала
Факториал неотрицательного целого числа — произведение чисел от 1 до n, а 0! = 1. Отрицательные и нецелые аргументы для этой задачи отклоняются.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, которая вычисляет факториал заданного числа. Учтите, что факториал нуля должен возвращать 1, а для отрицательных значений факториал считается неопределённым.
Ответ
Факториал неотрицательного целого числа — произведение чисел от 1 до n, а 0! = 1. Отрицательные и нецелые аргументы для этой задачи отклоняются.
def factorial(n: int) -> int:
if isinstance(n, bool) or not isinstance(n, int) or n < 0:
raise ValueError('Expected a nonnegative integer')
result = 1
for value in range(2, n + 1):
result *= value
return result
Алгоритм выполняет O(n) умножений без рекурсивного стека. У Python целые произвольной точности, поэтому фактическая стоимость умножения растёт с размером результата; это не O(n) по битовой сложности.