Python: вычислите факториал n рекурсивно и итеративно

10 класс 1 просмотр задан 27.05.2026 📚 редакторский

Напишите две реализации функции factorial(n) для $n \geq 0$: рекурсивную и итеративную. Сравните, какая лучше для больших $n$ и почему.

1 ответ

Принятый ответ
Ответ

Итеративная безопаснее

Как это получилось

Рекурсивная версия:

def fact_rec(n: int) -> int:
    if n <= 1:
        return 1
    return n * fact_rec(n - 1)

Итеративная версия:

def fact_iter(n: int) -> int:
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

print(fact_iter(5))   # 120
print(fact_iter(10))  # 3628800

Сравнение:

  • Рекурсия удобочитаема, но для $n > 1000$ может упереться в лимит стека Python (RecursionError). Лимит регулируется sys.setrecursionlimit, но дороже по памяти.
  • Итерация использует $O(1)$ стека и работает даже при $n = 10^5$.

Целые числа в Python имеют неограниченную точность, поэтому fact_iter(100) вычислится точно (158-значное число).

🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти