最强废铁h 发表于 2021-4-25 10:48:17

算阶乘,12之后的算不了时怎么回事??

#include<stdio.h>
int main()
{
long long fac(int n);
int n,y;
printf("input an integer number:");
scanf("%d", &n);
y=fac(n);
printf("%d!=%d\n", n,y);
printf("%d,%d",sizeof(y),sizeof(int(n)));
return 0;
}
long long fac(int n)
{
int f;
if (n < 0)
   printf("n<0,data error!");
else if (n == 0||n == 1)
   f = 1;
else
   f = fac(n - 1) * n;
return (f);
}
哪里出问题了??

桃花飞舞 发表于 2021-4-25 10:57:11

我猜溢出了

肖-肖 发表于 2021-4-25 11:05:55

本帖最后由 肖-肖 于 2021-4-25 11:12 编辑

解释再注释中,主要还是变量数据类型定义的时候有点问题
#include<stdio.h>
int main()
{
double fac(int n);//double就够用了
int n;
double y;//这里也要设置为double
printf("input an integer number:");
scanf("%d", &n);
y=fac(n);
printf("%d的阶乘是-->%lf\n", n,y);
printf("%d,%d",sizeof(y),sizeof(n));
return 0;
}
double fac(int n)
{
double f;//这里设置成double型的
if (n < 0)
   printf("n<0,data error!");
else if (n == 0||n == 1)
   f = 1;
else
   f = fac(n - 1) * n;
return f;
}

效果如下
页: [1]
查看完整版本: 算阶乘,12之后的算不了时怎么回事??