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

关于符合特定规则的数值求和计算方法及算法实现正确性的问询

算法验证与修正:3的倍数特殊求和计算

问题需求

需要实现一个满足以下规则的求和算法(输入均为正整数):

  • 计算传入数组中所有数字的总和
  • 若数字是3的倍数,需先将其加1再计入总和

你的代码问题分析

你写的循环逻辑是正确的,能够判断3的倍数并执行加1操作,但核心错误是最后返回的是固定值0,而不是计算好的总和sum,导致无论输入什么数组,最终输出都是0。

原代码:

function calculator(numbers) {
        
            let sum=0;
            for(let num of numbers){
                if(num % 3 == 0) {
                    sum+=num + 1
                }
                else {
                    sum+=num;
                }
            }
            return 0; // 这里错误,应该返回sum
        }
        
        console.log(calculator([3,6,7,9,13,22,27]))

修正后的代码

只需要将return 0改为return sum即可得到正确结果:

function calculator(numbers) {
    let sum = 0;
    for (let num of numbers) {
        if (num % 3 === 0) {
            sum += num + 1;
        } else {
            sum += num;
        }
    }
    return sum; // 返回计算后的总和
}

// 测试输入的计算结果:3→4,6→7,7→7,9→10,13→13,22→22,27→28,总和为4+7+7+10+13+22+28=91
console.log(calculator([3,6,7,9,13,22,27])) // 输出91

更简洁的实现方式

可以使用数组的reduce方法简化代码,逻辑和循环版本完全一致:

function calculator(numbers) {
    return numbers.reduce((total, num) => {
        return total + (num % 3 === 0 ? num + 1 : num);
    }, 0);
}

console.log(calculator([3,6,7,9,13,22,27])) // 同样输出91

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:06:24