← Назад к вопросам

Факториал числа

1.7 Middle🔥 161 комментариев
#Теория тестирования

Условие

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

Пример

Вход: 5 Выход: 120

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Решение факториала

Рекурсивный подход

def factorial_recursive(n: int) -> int:
    if n < 0:
        raise ValueError("Факториал только для неотрицательных чисел")
    if n == 0 or n == 1:
        return 1
    return n * factorial_recursive(n - 1)

Итеративный подход

def factorial_iterative(n: int) -> int:
    if n < 0:
        raise ValueError("Факториал только для неотрицательных чисел")
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

Встроенная функция

import math
result = math.factorial(5)  # 120

Примеры

  • 0! = 1
  • 1! = 1
  • 5! = 120
  • 10! = 3628800

Анализ сложности

ПодходВремяПамятьПрименение
РекурсивныйO(n)O(n)Элегантно, ограничен
ИтеративныйO(n)O(1)Производство, надежно
ВстроеннаяO(n)O(1)Оптимально

Граничные случаи

  • Отрицательные числа выбросят ValueError
  • 0! = 1 (математическое определение)
  • 1! = 1
  • Рекурсия имеет лимит около 1000
  • Итеративный подход работает с n > 10000

Для QA автоматизации

Рекомендуется итеративный подход:

  • Работает для любого размера n
  • Нет риска переполнения стека
  • Быстрее рекурсии
  • Легко тестировать граничные случаи
  • Демонстрирует понимание циклов
Факториал числа | PrepBro