算阶乘,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 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]