Составить рекурсивную функцию вычисления факториала целого ненатурального числа 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;
}
Пошаговое объяснение кода
Импорт библиотеки:
#include <iostream>– это директива для подключения библиотеки, которая позволяет использовать стандартные функции ввода и вывода.Определение функции:
unsigned long long factorial(int n)– определяем функциюfactorial, которая принимает целое числоnи возвращает его факториал. Используем типunsigned long longдля предотвращения переполнения при больших значениях.Проверка на корректность входных данных:
- Если
n < 0, выводим сообщение об ошибке и возвращаем0. Постарайтесь избегать вызовов функции с отрицательными числами.
- Если
Базовый случай:
- Если
nравно 0, возвращаем1(по определению факториала).
- Если
Рекурсивный вызов:
- Для случаев, когда
n > 0, возвращаемnумноженное на результат вызоваfactorial(n - 1). Этот вызов будет продолжать выполняться, пока не достигнем базового случая.
- Для случаев, когда
Функция main:
- В функции
mainзапрашиваем ввод от пользователя, выполняем факториал и выводим результат.
- В функции
Выводы
Таким образом, мы создали функцию на языке C++, которая вычисляет факториал целого ненатурального числа с помощью рекурсии. Важно обратить внимание на обработку некорректных входных данных, чтобы избежать ошибок при выполнении программы.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



