факториал числа в c++ - Вопросы по С+

Вопрос факториал числа в c++

Регистрация
5 Дек 2013
Сообщения
83
Репутация
6
Спасибо
0
Монет
0
почему не работает программа, где ошибка?
обязательно нужно что бы вводимое число не превышало 12.

#include
using namespace std;

int main()
{
int n;
int x=1;
cout<<"Vvedite n: ";
cin>>n;
while (n<=12)
{
for (int i=1; i<n+1; ++i)
x*=i;
}
cout<<n<<"!"<<" = "<<x<<endl;
system("pause");
}
 
Регистрация
15 Апр 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
а чем классический вариант не нравится? int fact(int x) { if(x != 0 && x > 0) return x * fact(x-1); else return 1; } Если без рекурсии int temp = 1; int fact_var; cin >> fact_var; while (fact_var > 0) { temp *= (fact_var--); /* temp = temp * fact_var; fact_var = fact_var - 1;*/ }
 
Регистрация
13 Мар 2017
Сообщения
314
Репутация
70
Спасибо
11
Монет
0
Легче и удобнее сделать отдельную функцию для факториала, а условие прописать в основной программе
[THIDE="0"]#include <iostream>
using namespace std;

long double fact(int N)
{
if(N < 0) // если отрицательное число
return 0; // возвращаем 0
if (N == 0) // если ввели 0
return 1; // возвращаем факториал от 0
else
return N * fact(N - 1); //рекурсия
}

int main()
{
int N;
cout << "Enter digit: ";
cin >> N;
if (N>=13) cout << "N=<13"; else // условие
cout << "Factorial " << N << " = " << fact(N) << endl << endl; // fact(N) - call function
return 0;
}[/THIDE]
 
Сверху Снизу