简单的 C++ 阶乘程序

简单的 C++ 阶乘程序

问题描述:

作为作业,我需要一个程序来读取一个非负整数并计算并打印其阶乘.到目前为止,我编写了代码,但如果我尝试输入 50!结果为 0.它适用于较小的数字.任何帮助将不胜感激.

as homework I need a program that reads a nonnegative integer and computes and prints its factorial. So far I wrote the code but if I try to input 50! the result is 0. It works with smaller numbers. Any help would be much appreciated.

#include <iostream>

using namespace std;

int main()
{
    int counter = 1;
    int number;

    cout << "Please enter a number: ";
    cin >> number;

    int factorial = number;
    while (counter != number)
    {
        factorial = factorial * (number - counter);
        counter++;

    }

    cout << "The factorial of " << number << "! is: " << factorial << endl;
    return 0;
}

50! is 304140932017133780436126081660647688437764156896051200000000000000000000000由于整数溢出,结果为0.

50! is 30414093201713378043612608166064768844377641568960512000000000000, far too large for an int. Due to integer overflow, the result is 0.