← Назад к вопросам
Факториал числа
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
- Нет риска переполнения стека
- Быстрее рекурсии
- Легко тестировать граничные случаи
- Демонстрирует понимание циклов