Страницы

четверг, 6 августа 2015 г.

Факториал числа - рекурсия

Вычисление факториала числа с помощью рекурсии на С++

Вычислить факториал числа можно по следующей формуле:
n! = n*(n-1)*(n-2)*…*1*1
При этом 1!=1 и 0!=1.
Факториал числа % равен:
5! = 5*4*3*2*1 = 120
Составим программу на С++ для вычисления факториала введенного пользователем целого числа.
Используем рекурсивную функцию fact(n), которая будет возвращать 1, если аргумент равен 0, 0, если аргумент отрицательный, и будет вызывать себя в прочих случаях с аргументом, уменьшенным на единицу..
Текст программы:

#include<iostream>
using namespace std;
int fact (unsigned long number)
{
    if(number<0) return 0;
    if(number==0) return 1;
    return number*fact(number - 1);
}

void main()
{
    unsigned long n;
    cout<<"Vvedite celoje chislo: ";
    cin>>n;
    cout<<"\nFactorial chisla "<<n<<" raven "<<fact(n)<<endl;
    cin.get();
}
Поскольку факториал отрицательного числа не существует, функция возвращает 0, если пользователь введет такое число. Вызов функции продолжается, пока аргумент не будет равен 0, при этом функция вернет 1.