Реализация функции для вычисления факториала

Факториал неотрицательного целого числа — произведение чисел от 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) по битовой сложности.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее