You need to enable JavaScript to run this app. C++使用函数与循环实现求和序列输出结果不符合预期
优惠活动
大模型
产品
解决方案
定价
更多

C++使用函数与循环实现求和序列输出结果不符合预期

代码错误定位与修正

核心问题点

  • 循环逻辑完全偏离目标:原循环未使用循环变量计算序列项,反而固定取入参x生成计算值,且循环从0开始遍历,未覆盖序列首项1/2的计算场景
  • 累加逻辑完全错误:原循环内先将sum直接赋值为固定表达式结果,再执行sum += sum(即当前值自翻倍),没有逐次累加序列每一项的动作
  • 存在整数整除陷阱:若直接对两个整型值做除法,C++会执行整数截断,例如1/2会被计算为0,无法得到正确的小数结果

修正后的可运行代码

#include <iostream>
using namespace std;

void sumSeries(int x);

int main() {
    sumSeries(1);
    return 0;
}

void sumSeries(int x){
    double sum = 0;
    // 按公式要求遍历每一项:分子从1到传入的参数x
    for(int k = 1; k <= x; k++){
        // 强制将分子转为浮点类型,规避整数整除问题
        double currentItem = (double)k / (k + 1);
        sum += currentItem; // 逐次累加当前项,不做重新赋值、自翻倍操作
    }
    cout << sum;
}

效果验证

  • 传入参数1时,循环仅计算第一项1.0/2.0,最终输出0.5,匹配预期
  • 传入参数2时,累加1/2 + 2/3,结果约为0.8333,与数学公式计算值完全一致

内容的提问来源于stack exchange,提问作者Cyrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 23:24:05