在C中使用递归的阶乘程序:
long fact(int n)
{
if (n == 1)
return 1;
else
{
return n*fact(n - 1);
}
}
该程序适用于最多12个数字。 但是对于大于这个数字的事实,这个事实给出了错误的价值。
对于这样的数字,长的范围是足够的,那么为大于12的数字计算阶乘的原因是什么?
答案 0 :(得分:1)
long
的范围足以满足此类数字
不,这并非总是如此。 long
仅保证至少为32位,但13!
的值为6227020800
或0x17328CC00
,不能保存为32位整数
请尝试使用long long
。