В данной статье рассматривается применение рекурсии в C++ на примере вычисления факториала целого числа. Для реализации приведенной ниже программы Вам понадобится среда разработки, которую можно скачать здесь или здесь.
Сначала определимся, что из себя представляет рекурсивная функция. Рекурсивной называется функция, которая возвращает значение самой себя, рассмотрим пример рекурсивной функции на примере программы, вычисляющей факториал целого числа
Создаем пустой проект в Visual Studio, добавляем файл исходного кода в проект, который мы назовем main.cpp.
Для начала напишем главную функцию программы и определим заголовочные файлы:
#include <iostream> using namespace std; int main() { int N; setlocale(0,""); // Включаем кириллицу cout << "Введите число для вычисления факториала: "; cin >> N; cout << "Факториал для числа " << N << " = " << fact(N) << endl << endl; // fact(N) - функция для вычисления факториала. return 0; }
А теперь приступим к написанию самой функции:
long double fact(int N) { if(N < 0) // если пользователь ввел отрицательное число return 0; // возвращаем ноль if (N == 0) // если пользователь ввел ноль, return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1 =) else // Во всех остальных случаях return N * fact(N - 1); // делаем рекурсию. }
Наша окончательная версия программы будет выглядеть так:
#include <iostream> using namespace std; long double fact(int N) { if(N < 0) // если пользователь ввел отрицательное число return 0; // возвращаем ноль if (N == 0) // если пользователь ввел ноль, return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1 =) else // Во всех остальных случаях return N * fact(N - 1); // делаем рекурсию. } int main() { int N; setlocale(0,""); // Включаем кириллицу cout << "Введите число для вычисления факториала: "; cin >> N; cout << "Факториал для числа " << N << " = " << fact(N) << endl << endl; // fact(N) - функция для вычисления факториала. return 0; }
Для удобства использования данной функции, ее можно поместить в отдельный заголовочный файл, к примеру — fact.h, а затем подключить этот файл в главный файл программы:
fact.h
long double fact(int N) { if(N < 0) // если пользователь ввел отрицательное число return 0; // возвращаем ноль if (N == 0) // если пользователь ввел ноль, return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1 =) else // Во всех остальных случаях return N * fact(N - 1); // делаем рекурсию. }
В таком случае нам будет необходимо добавить в главных файл программы строчку, подключающую функцию.