为什么没有报错但是结果跑不出来

#include
long fact(int n);
int main()
{
int m;
long ret;
printf("input m:");
scanf("%d",&m);
ret=fact(m);
if(ret=-1)
{
printf("input data error!\n");
}else
{
printf("%d! = %1d\n",m,ret);
}return 0;
}
long fact(int n)
{
int i;
long result=1;
if(n<0)
{
return -1;
}
else
{
for(i=2;i<=n;i++)
result *=i;
return result;
}

}

数据范围的问题,试试n<13能不能跑出来

我看出来的有两个错误:①:if(ret=-1) 改成双等号表示判断
②fact 函数体内改为 因为你的i是从二开始的,但是如果n等于1,有错误;

_else if(n>0)
{
for(i=1;i<=n;i++)
{
result *=i;
return result;
}
}_

我这里改完之后是可以正常运行的你可以试试