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

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

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

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

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

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

Ответ нейросети

03 февраля 2026 18:29

Вот подробное решение и готовая программа на Python. Задача: вычислить N! рекурсивно, для неотрицательного N.

Что делает программа:

  • Определяем рекурсивную функцию factorial(n).
  • Базовый случай: n равно 0 или 1, возвращаем 1 (0! = 1, 1! = 1).
  • Рекурсивный шаг: n! = n × (n−1)!.
  • Вводим проверку на неотрицательность: если введено отрицательное число, выводим сообщение об ошибке.
  • Время выполнения O(n), потребление памяти O(n) из-за глубины рекурсивных вызовов.

Пояснение примера:

  • 5! = 5 × 4! = 5 × 4 × 3! = 5 × 4 × 3 × 2! = 5 × 4 × 3 × 2 × 1! = 5 × 4 × 3 × 2 × 1 = 120.
  • 0! = 1 по определению.

Код:

def factorial(n: int) -> int:
    # Проверка на неотрицательность
    if n < 0:
        raise ValueError("n must be a non-negative integer")

    # Базовый случай: 0! = 1 и 1! = 1
    if n <= 1:
        return 1

    # Рекурсивный шаг: n! = n * (n-1)!
    return n * factorial(n - 1)

def main():
    try:
        n_input = input("Введите неотрицательное целое N: ").strip()
        n = int(n_input)
    except ValueError:
        print("Ошибка: введено не целое число.")
        return

    if n < 0:
        print("Ошибка: N должен быть неотрицательным.")
        return

    result = factorial(n)
    print(f"{n}! = {result}")

if __name__ == "__main__":
    main()

Примеры использования:

  • Ввод: 5 → Вывод: 5! = 120
  • Ввод: 0 → Вывод: 0! = 1

Замечание:

  • Для больших N рекурсия может превышать глубину стека Python (обычно около 1000 вызовов). В таком случае можно либо увеличить предел рекурсии с помощью sys.setrecursionlimit, либо перейти к итеративному решению. Но для целей учебной задачи и понимания рекурсии приведенный код подходит.

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

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

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

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

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

qr-codegoogle-playapp-store

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

Факториалом неотрицательного целого числа N называется произведение всех целых чисел от 1 до N. Обозначается так: N! Для N = 0 значение факториала считается равным единице: 0! = 1 Напиши программу на python, которая по целому неотрицательному числу N с помощью рекурсивной функции вычислит N!
Вот подробное решение и готовая программа на Python. Задача: вычислить N! рекурсивно, для неотрицательного N. Что делает программа: - Определяем рекурсивную функцию factorial(n). - Базовый случай: n равно 0 или 1, возвращаем 1 (0! = 1, 1! = 1). - Рекурсивный шаг: n! = n × (n−1)!. - Вводим проверку на неотрицательность: если введено отрицательное число, выводим сообщение об ошибке. - Время выполнения O(n), потребление памяти O(n) из-за глубины рекурсивных вызовов. Пояснение примера: - 5! = 5 × 4! = 5 × 4 × 3! = 5 × 4 × 3 × 2! = 5 × 4 × 3 × 2 × 1! = 5 × 4 × 3 × 2 × 1 = 120. - 0! = 1 по определению. Код: ```python def factorial(n: int) -> int: # Проверка на неотрицательность if n < 0: raise ValueError("n must be a non-negative integer") # Базовый случай: 0! = 1 и 1! = 1 if n <= 1: return 1 # Рекурсивный шаг: n! = n * (n-1)! return n * factorial(n - 1) def main(): try: n_input = input("Введите неотрицательное целое N: ").strip() n = int(n_input) except ValueError: print("Ошибка: введено не целое число.") return if n < 0: print("Ошибка: N должен быть неотрицательным.") return result = factorial(n) print(f"{n}! = {result}") if __name__ == "__main__": main() ``` Примеры использования: - Ввод: 5 → Вывод: 5! = 120 - Ввод: 0 → Вывод: 0! = 1 Замечание: - Для больших N рекурсия может превышать глубину стека Python (обычно около 1000 вызовов). В таком случае можно либо увеличить предел рекурсии с помощью sys.setrecursionlimit, либо перейти к итеративному решению. Но для целей учебной задачи и понимания рекурсии приведенный код подходит.