c语言编写的求阶乘的程序,小点的数能正常运行,大的数输出为0,这神马情况。

2025-04-03 14:17:35
推荐回答(2个)
回答1:

越界了
int 最大只能存到2^31 -1 = 2147483647
13!=6227020800
所以只要超过13 就会导致溢出出错。
解决方法: 要么改成double的 求近似值
要么,改数组模拟高精度大数运算。

回答2:

int型可以表示的范围是-2^31~2^31-1,因此最多可以表示12以内的阶乘。再往上需要使用double型或者long long型,它们可以表示20以内的阶乘。再往上则需要使用高精度乘法。