在C中使用递归的大数因子

时间:2014-06-30 08:45:24

标签: c recursion

在C中使用递归的阶乘程序:

long fact(int n)
{
    if (n == 1)
       return 1;
    else
    {
       return n*fact(n - 1);
    }
}

该程序适用于最多12个数字。 但是对于大于这个数字的事实,这个事实给出了错误的价值。

对于这样的数字,长的范围是足够的,那么为大于12的数字计算阶乘的原因是什么?

1 个答案:

答案 0 :(得分:1)

  

long的范围足以满足此类数字

不,这并非总是如此。 long仅保证至少为32位,但13!的值为62270208000x17328CC00,不能保存为32位整数

请尝试使用long long