код :
#include <iostream>
#include <string>
using namespace std;
int fak(unsigned long long int a) {
if (a == 1 || a ==0) {
return(1);
}
return a * fak(a - 1);
}
int main()
{
setlocale(LC_ALL, "ru");
int a;
cout « "число» ";
cin » a;
cout « "факториал = "«fak(a) « endl;
}
Однако при нахождении факториала более 12, программа работает некорректно. Подскажите пожалуйста, с чем это связано и где допустил ошибки.
С переполнением int
То, что long long тоже не поможет?
Поможет до какого-то предела, но у тебя функция int возвращает. Измени тип возврата на long long
Понял, программа заработала. Большое спасибо!
Обсуждают сегодня