我的简单因子计算器C ++程序出错了吗?

时间:2013-01-16 11:02:42

标签: c++

半小时前,我制作了一个简单的因子计算器,它将非零整数作为输入。在测试了一些值之后,我注意到它只能在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;
}

1 个答案:

答案 0 :(得分:1)

你超过了int的限制。 13! = 6227020800,int仅涵盖-2147483648 .. 2147483647.使用更大的类型(例如__int64),双重(但您将失去精度)或实现(或使用)大数字库。