Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Young Fly 03 февраля 2026 18:28

Факториалом неотрицательного целого числа 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) или адаптировать задачу под конкретный класс и язык программирования.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Факториалом неотрицательного целого числа N называется произведение всех целых чисел от 1 до N. Обозначается так: N! Для N = 0 значение факториала считается равным единице: 0! = 1 Напиши программу, которая по целому неотрицательному числу N с помощью рекурсивной функции вычислит N!
Ниже подробное решение с объяснениями и примером кода на 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) или адаптировать задачу под конкретный класс и язык программирования.