千古对不了的对联:关于C的递归调用,求N!有问题,请高手帮忙!!

来源:百度文库 编辑:中科新闻网 时间:2024/05/10 06:12:29
为什么这个求N阶乘的程序,只能算7以下数,再高的数就输出错误的数值!
fac(int n)
{int t;
if(n==1)||(n==0) return 1;
else
{ t=n*fac(n-1);
return t;
}
}
main( )
{int m,y;
printf(“Enter m:”);
scanf(“%d”,&m);
if(m<0) printf(“Input data Error!\n”);
else
{y=fac(m);
printf(“\n%d! =%d \n”,m,y);
}
}
都试了,不行,请高手们再给几个答案,谢谢!

int类型能容纳的数据长度太小了,改称float或者double

你把t 定义为int ,整数长度只有4字节,不够用,定义为长整型,或者实型。

要用高精度的 算法 啊
直接用这样的 只能算几个