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

Факториал равен произведению чисел от 1 до n, причём 0! = 1. Для фиксированного целого типа нужно отдельно обрабатывать отрицательный ввод и переполнение.

Короткий ответ

Что ответить на собеседовании

Факториал равен произведению чисел от 1 до n, причём 0! = 1. Для фиксированного целого типа нужно отдельно обрабатывать отрицательный ввод и переполнение.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, которая принимает целое число и возвращает его факториал.

Ответ

Факториал равен произведению чисел от 1 до n, причём 0! = 1. Для фиксированного целого типа нужно отдельно обрабатывать отрицательный ввод и переполнение.

Пример на Swift с результатом UInt64:

func factorial(_ n: Int) -> UInt64? {
    guard n >= 0 else { return nil }
    if n < 2 { return 1 }
    var result: UInt64 = 1
    for value in 2...n {
        let next = result.multipliedReportingOverflow(by: UInt64(value))
        guard !next.overflow else { return nil }
        result = next.partialValue
    }
    return result
}

Для n от 0 до 20 результат помещается в UInt64, начиная с 21 функция вернёт nil. Для больших точных значений нужен тип произвольной точности. Итеративный вариант не расходует стек рекурсии; память постоянная.

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

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

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

Подробнее