下面这段代码里面为什么计算30的阶乘的时候是对的, 31的时候就开始为负了,到34的时候就为0了?
#include <stdio.h>
int factorial(int n){
int result;
if(n<0)
{
printf("输入错误!\n");
}
else if (n==0||n==1)
{
result=1;
}
else
{
result=factorial(n-1)*n;
}
return result;
}
int main()
{
int n=31;
printf("%d的阶乘=%d\n",n,factorial(n));
return 0;
}