首先,我是C ++的新手。我已经尝试过以下程序来计算任何数字的阶乘。
#include <iostream>
using namespace std;
unsigned long factorial(unsigned long n){
return n <= 1 ? 1 : n * factorial(n-1);
}
int main()
{
cout << "Enter any Number to calculate factorial." <<endl;
unsigned long n;
cin >> n ;
cout << factorial(n) ;
}
如果我给出像5,3,20这样的小数字,它会返回我的确切值。但是,如果我给出像34等数字。它会让我归零。我认为它超出了极限范围。无论我输入什么号码,请帮我解决这个问题。
答案 0 :(得分:6)
因子巨大。
34! = 295232799039604140847618609643520000000
这几乎不适合128位。如果您的编译器支持128位数字类型,则可以使用它来计算最多34的阶乘。如果不是,或者如果您需要更大的数据,则需要使用某种bignum库。