一、double最大有效位数16位,50的阶乘老长了,C中数值类变量都不可能运算、表示出来,只能采用大数相乘的方法,自己写运算程序去实现了。
二、你的程序太乱了
给你一个可运行的程序,但结果并不是准确的
#include
int main()
{
double fac(int n);
int n;
double y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%.0lf\n",n,y);
return 0;
}
double fac(int n)
{
double f ;
if(nf=1;
else
f=fac(n-1)*n;
return(f);
}