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

составить рекурсивную функцию вычисления факториала целого ненатурального числа n на языке c++

Ответ нейросети
19 февраля 2025 10:18

Для того чтобы создать рекурсивную функцию вычисления факториала целого ненатурального числа n на языке C++, давайте сначала разберёмся с определением факториала.

Определение факториала

Факториал числа n, обозначаемый как n!, определяется следующим образом:

  • Если n = 0, то 0! = 1, по определению.
  • Если n > 0, то n! = n * (n - 1)!.
  • Факториал для отрицательных чисел обычно не определен, но можем обсудить отдельный случай.

Рекурсивная функция

Рекурсивная функция — это функция, которая вызывает саму себя для решения подзадачи. В случае факториала мы будем использовать рекурсию, чтобы вычислить n! как n * (n - 1)!.

Вот пример кода на C++ для вычисления факториала:

#include <iostream>

unsigned long long factorial(int n) {
    // Проверка на некорректный ввод
    if (n < 0) {
        std::cout << "Факториал отрицательного числа не определен." << std::endl;
        return 0; // Возвращаем 0 в случае ошибки
    }
    // Базовый случай
    if (n == 0) {
        return 1; // 0! = 1
    }
    // Рекурсивный случай
    return n * factorial(n - 1);
}

int main() {
    int n;
    std::cout << "Введите неотрицательное целое число: ";
    std::cin >> n;
    
    unsigned long long result = factorial(n);
    if (n >= 0) {
        std::cout << "Факториал " << n << " равен " << result << std::endl;
    }

    return 0;
}

Пошаговое объяснение кода

  1. Импорт библиотеки: #include <iostream> – это директива для подключения библиотеки, которая позволяет использовать стандартные функции ввода и вывода.

  2. Определение функции: unsigned long long factorial(int n) – определяем функцию factorial, которая принимает целое число n и возвращает его факториал. Используем тип unsigned long long для предотвращения переполнения при больших значениях.

  3. Проверка на корректность входных данных:

    • Если n < 0, выводим сообщение об ошибке и возвращаем 0. Постарайтесь избегать вызовов функции с отрицательными числами.
  4. Базовый случай:

    • Если n равно 0, возвращаем 1 (по определению факториала).
  5. Рекурсивный вызов:

    • Для случаев, когда n > 0, возвращаем n умноженное на результат вызова factorial(n - 1). Этот вызов будет продолжать выполняться, пока не достигнем базового случая.
  6. Функция main:

    • В функции main запрашиваем ввод от пользователя, выполняем факториал и выводим результат.

Выводы

Таким образом, мы создали функцию на языке C++, которая вычисляет факториал целого ненатурального числа с помощью рекурсии. Важно обратить внимание на обработку некорректных входных данных, чтобы избежать ошибок при выполнении программы.