C语言1到20的阶乘怎么得出正确结果?

#include
int main()
{
double fun1(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fun1(i);
sum=sum+m;
printf("%lf\n",sum);
}
double fun1(int n)
{
double m;
if(n==1)
m=1;
else m=fun1(n-1)*n;
return(m);
}

为什么程序的结果是2432902008176640000.000000?怎么得出正确结果?

double 精度问题,需要自己用大数乘法来实现
代码看 https://ask.csdn.net/questions/714586 的回答

采纳本回答,可以给你写一个。不采纳就算了,你也看到了,前一个回答那么详细,lz就跑了。都是像你这种0声望的用户。