#include<stdio.h>
int main()
{
int fac(int n);
int n;
int y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d\n",n,y);
return 0;
}
int 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);
}
计算结果不是预期结果。
如何将f,y和fac函数定义为float或double型?
谢谢友友的答疑~(^з^)-♡
改成long long就可以了
#include<stdio.h>
int main()
{
long long fac(long long n);
long long n;
long long y;
printf("input an integer number:");
scanf("%lld", &n);
y = fac(n);
printf("%lld!=%lld\n", n, y);
return 0;
}
long long fac(long long n)
{
long long 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);
}