弱弱的跪求大神指导
#include <stdio.h>
int iteration(int n)
{
if(n==0)
return 1;
else if(n>0)
return n*iteration(n-1);
else
printf("你输入的数不在阶乘范围内。");
}
int main()
{
int n,s;
scanf("%d",&n);
printf("%d!",n);
s=iteration(n);
printf("=%d\n",s);
return 0;
}
结果:
-7
-7!你输入的数不在阶乘范围内。=26
Press any key to continue
为神马结果会多了个“=26”,一输入负数就多了个=26真心想不明白怎么来滴?????0.0
[解决办法]
[解决办法]
1、iteration函数要求返回一个值,可是你的else分支只是打印却没有返回,所以这个值不确定是多少;
2、最后你有printf("=%d\n",s)这个不确定的值。
所以,你应该在else那边return -1,然后main中判断如果s等于-1的话,就不打印了。
[解决办法]
错误上边的人基本已经都指出了,不过计算阶乘只用int不用大数,大概也就能算到30!左右