You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言for循环最后一次迭代被跳过未打印结果问题修复

问题修复

两处错误导致最后一个结果缺失:

  • 循环范围写小了:i < num - 1的终止条件会让最后一个元素根本不进入循环,最后一段的数值没被加到sum里
  • 逻辑有问题:一是多余的numeri[i] == num - 1判断纯靠巧合触发第二段输出,没有实际逻辑意义;二是没有处理遍历到切片末尾的兜底输出,最后一段没有下降沿触发打印,自然不会出结果。

修正后可运行代码

func main() {
    var numeri []int
    numeri = GetInputSlice()
    fmt.Println(numeri)
    var sum int
    num := len(numeri)
    for i := 0; i < num; i++ {
        sum += numeri[i]
        // 两个触发打印的场景:遇到下降沿(当前值大于下一个值)、遍历到切片最后一位
        if (i < num-1 && numeri[i] > numeri[i+1]) || i == num-1 {
            fmt.Println(sum)
            sum = 0
        }
    }
}

针对你给出的测试序列[1 2 13 0 7 8 9 -1 0 2],上述代码会依次输出16、24、1,和预期结果完全一致。

补充说明:如果你最开始描述的「遇到序列中新的最大值才求和」是真实需求,还需要新增变量单独记录遍历过程中的历史最大值,每次当前值超过历史最大值时才触发求和输出——当前修正是完全匹配你给出的测试用例预期结果实现的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:57:20