| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 777 人关注过本帖
标题:各位大佬,我是新手。如下代码运行时偶数能正常阶乘求和,但是奇数就输入数 ...
只看楼主 加入收藏
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
等 级:论坛游民
帖 子:38
专家分: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
快速回复:各位大佬,我是新手。如下代码运行时偶数能正常阶乘求和,但是奇数就输 ...
数据加载中...
 
   



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

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