要求用递归函数求x!,其中x<=30。
问题是当x=30时,我运行的结果是 265252859812191070000000000000000
而题目所给测试样例的运行结果是 265252859812191058636308480000000
请教一下如何解决,十分感谢!
我的代码如下:
#include
double JC(int x)
{
if(x==0||x==1)
return 1;
else
return x*JC(x-1);
}
int main()
{
int x;
scanf("%d",&x);
printf("%.0lf",JC(x));
return 0;
}
应该是你JC返回的是double 但下一次作为参数输入又是int,所以这里精度损失,而且与编译器有关。
不用怀疑你自己,要相信代码运行的结果
我试着跑了下你的程序,跟你的结果是一样的
之所以和题目的结果不一样,可能是运行主机32位/64位、编译器差异,还有题目的结果是错的
打工人奉劝一句,职场上如果遇到这种情况,确定自己这边没问题,要果断甩锅出去