求N!(阶乘) C语言

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:45:52
int n,i;
float jct;

scanf("%d",&n);
jct=1.0;
i=1;
while(i<=n)
{jct*=i;
i++;
}
printf("%d\n%f\n",n,jct);
getch();
如果把float改为int会怎么样 为什么

有影响,
int的值域是-32768~32767
float的值域是-3.4e-38~3.4e+38
也就是说float类型的至于要比int类型的值域大。
既然是n的阶乘,自然是至于越大越好,最好是用double类型。
如果用int类型的话,那么,n的值稍大一点就会出现溢出。

int Aa(int n)//至于这里的类型是可以随你的,我订的是int型
{
if(n==0)//0的阶乘为1,先做判断
{
return 1;
}
//这里用到递归,也就是自己调自己
return n*Aa(n-1);
}
如果还不懂得话,加我QQ 494710277

结果的上限要求在2^63-1的值范围内

用float可以使范围松动点,不过太大时数值也不精确的

应该没关系