标题:各位大佬,我是新手。如下代码运行时偶数能正常阶乘求和,但是奇数就输入数 ...
只看楼主
wys02
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2023-1-18
结帖率:0
已结贴  问题点数:20 回复次数:2 
各位大佬,我是新手。如下代码运行时偶数能正常阶乘求和,但是奇数就输入数字但是不给结果,想了很久都没想出来,请求大佬帮忙指出问题,谢谢各位大佬了!
  #include<stdio.h>
  int f(int x)
  {
      if(x==1)
      {
          return 1;
      }
      else
      {
          return x*f(x-1);
      }
  }
  int main()
  {
      int x,y=0;
      scanf("%d",&x);
    while(x!=0&&x!=-1)
    {
        y=y+f(x)+f(x-1);
        x-=2;
    }
      printf("%d\n",y);
      return 0;
  }
搜索更多相关主题的帖子: 输入 请求 数字 代码 int 
2023-01-18 14:54
oped02
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2022-10-16
得分:20 
在main函数中,当x为奇数时,每次循环将会减2,而不是1。这会导致最后x=-1时循环终止,而没有计算x的阶乘。因此,输入奇数将不会返回正常答案。

此外,每一次循环都会累加f(x)+f(x-1),而没有考虑x为奇数时,f(x-1)不存在,会导致累加出错。

如果要保证输入奇数也能返回正常答案,可以在循环条件中添加判断x是否为奇数,或者在循环体中添加特判x为奇数的情况。
2023-01-18 15:02
wys02
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2023-1-18
得分:0 
回复 2楼 oped02
好的好的,谢谢大佬!!!
2023-01-18 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511131-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088155 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved