首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

弱弱的跪求大神指点

2012-08-09 
弱弱的跪求大神指导#include stdio.hint iteration(int n){if(n0)return 1else if(n0)return n*iter

弱弱的跪求大神指导
#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!左右

热点排行