Вычисления факториала

 

Сначала определимся, что из себя представляет рекурсивная функция. Рекурсивной называется функция, которая возвращает значение самой себя, рассмотрим пример рекурсивной функции на примере программы, вычисляющей факториал целого числа

Для начала напишем главную функцию программы и определим заголовочные файлы:

#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); // делаем рекурсию. }

В таком случае нам будет необходимо добавить в главных файл программы строчку, подключающую функцию.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: