半小时前,我制作了一个简单的因子计算器,它将非零整数作为输入。在测试了一些值之后,我注意到它只能在12点之前正常工作!
我几个月来一直没有编程,而且说实话,他仍然是初学者。我决定使用递归,所以我可以回到"编程模式"更快(我的偏好)。
我检查并修改了它近一个小时了。我真的不知道我的算法有什么问题。
这是我的代码:
#include <iostream>
using namespace std;
int factorial(int);
int main()
{
int usrInput = 0; //initialize input variable
cout << "Please input the factorial you want to calculate: ";
cin >> usrInput;
while(usrInput < 1)
{
cout << "Please input a valid number: ";
cin >> usrInput;
} //end while
cout << "\nAnswer: " << factorial(usrInput) << '\n';
return 0;
}
int factorial(int n)
{
int product = n;
if(n < 2)
product = 1;
else
{
product *= factorial(n-1);
cout << "\n" << product; //debugging line
} //end if else
return product;
}
答案 0 :(得分:1)
你超过了int的限制。 13! = 6227020800,int仅涵盖-2147483648 .. 2147483647.使用更大的类型(例如__int64),双重(但您将失去精度)或实现(或使用)大数字库。