猿问

递归程序(求阶乘)随输入数值增大(>31时),输出结果变成了垃圾数据,是怎么回事?

大佬们好!我的递归程序实现代码如下:

include<stdio.h>

int F(int n)
{

if(n==0)    return 1;else
    return F(n-1)*n;

}
int main()
{

int n;scanf("%d",&n);printf("%d\n",F(n));return 0;

}

运行结果当超过31时,输出的结果会变成0,当我用32做实验时,直接输出了一个负值,当输入数据小于等于31时,输出正常,没有问题
对一些小的数据,如3、 6、 9用计算器进行过验证,输出结果没有问题

求大佬们解答!


慕容3067478
浏览 477回答 1
1回答

紫衣仙女

数据溢出,建议用long类型的试试
随时随地看视频慕课网APP
我要回答