Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3559212
А
Аноним
03 февраля 2026 18:28 · публичный вопрос
А
Аноним

Факториалом неотрицательного целого числа N называется произведение всех целых чисел от 1 до N. Обозначается так: N! Для N = 0 значение факториала считается равным единице: 0! = 1…

Запрос пользователя

Факториалом неотрицательного целого числа N называется произведение всех целых чисел от 1 до N. Обозначается так: N! Для N = 0 значение факториала считается равным единице: 0! = 1 Напиши программу, которая по целому неотрицательному числу N с помощью рекурсивной функции вычислит N!

Ответ нейросети
03 февраля 2026 18:28

Ниже подробное решение с объяснениями и примером кода на Python, реализующее вычисление N! через рекурсивную функцию. Это подходит для средней школы и понятно, даже если предмет и класс не указаны.

Что такое рекурсия для факториала

  • Базовый случай: 0! = 1 и 1! = 1.
  • Рекурсивный шаг: для n > 1 факториал определяется как n! = n · (n−1)!.
  • Реализация повторяет этот шаг до достижения базового случая.

Пояснение к работе кода

  • Функция factorial(n) принимает неотрицательное целое n.
  • При n = 0 или n = 1 возвращает 1 (базовый случай).
  • При n > 1 возвращает n * factorial(n-1) (рекурсивный вызов).
  • В главной части программы считывается N и выводится N!.

Код на Python (рекурсивная реализация) def factorial(n): if n < 0: raise ValueError("N должен быть неотрицательным") if n == 0 or n == 1: return 1 return n * factorial(n - 1)

if name == "main": try: n = int(input("Введите неотрицательное число N: ").strip()) if n < 0: print("Ошибка: N должен быть неотрицательным.") else: print(f"{n}! = {factorial(n)}") except ValueError: print("Некорректный ввод. Введите неотрицательное целое число.")

Пример работы

  • Ввод: 5
  • Вывод: 5! = 120 Пошагово: 5! = 5 × 4!; 4! = 4 × 3!; 3! = 3 × 2!; 2! = 2 × 1!; 1! = 1. Итак, 5! = 5×4×3×2×1 = 120.

Замечания и предупреждения

  • Время выполнения: O(N), количество умножений — N.
  • Потребление памяти: O(N) из-за глубины стека рекурсии.
  • У Python глубины рекурсии ограничены (по умолчанию примерно 1000). Для больших N может возникнуть RecursionError. В таком случае можно:
    • увеличить предел рекурсии (не рекомендуется без остановки на разумных N): import sys; sys.setrecursionlimit(2000)
    • использовать итеративную реализацию факториала (или встроенную math.factorial).
    • или использовать математическую оптимизацию для очень больших N (вычислять модуль или с использованием больших чисел без рекурсии).

Альтернативно (для сравнения) — итеративная версия без рекурсии (для проверки и для больших N): def factorial_iter(n): if n < 0: raise ValueError("N должен быть неотрицательным") result = 1 for i in range(2, n + 1): result *= i return result

Если хотите, могу привести аналогичный пример на другом языке (C++, Java) или адаптировать задачу под конкретный класс и язык программирования.