后面代码main函数中的for循环,除了费时,的确没什么用。问题是出在你的double fact(int n)函数的定义。题目之所以提醒你n是int,但是函数返回类型是double的,就是说明在计算n!的过程中,int类型会溢出。试了一下,当a > 12时,阶乘的结果就溢出了。所以你需要跟参考代码一样,把你的a定义成double,才不会出现溢出的情况double fact(int n) { double a = 1; int i; for(i = n; i > 1; i--) a = a * i; }
double fact(int n) { double a = 1; int i; for(i = n; i > 1; i--) a = a * i; }
69,371
社区成员
243,082
社区内容
加载中
试试用AI创作助手写篇文章吧