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

JavaScript如何计算正整数N以内所有奇数的总和

解决方案

方法1:基于现有代码修改(先生成数组再筛选求和)

  • 第一步:用Array.prototype.filter()筛选数组中的奇数,奇数判断条件为数值对2取余结果等于1
  • 第二步:用Array.prototype.reduce()对筛选后的奇数数组累加求和
const n = 5 // 可修改为任意正整数

let arr = []
let i = 0
while (i < n) {
    i++
    arr.push(i)
}

// 筛选奇数
const oddNumbers = arr.filter(num => num % 2 === 1)
// 对奇数求和
const sum = oddNumbers.reduce((prev, curr) => prev + curr, 0)

console.log(sum) // n=5时输出9,符合预期

方法2:内存更优实现(无需生成完整数组,遍历直接累加)

适用于N数值较大的场景,避免占用额外数组内存:

function calcOddSum(n) {
    let sum = 0
    for(let i = 1; i <= n; i++) {
        if(i % 2 === 1) {
            sum += i
        }
    }
    return sum
}

console.log(calcOddSum(5)) // 输出9
console.log(calcOddSum(4)) // 输出4

方法3:数学公式法(性能最优,时间复杂度O(1))

正整数范围内,前k个奇数的和等于k的平方,N以内的奇数个数k可通过(N+1)向下取整除以2计算,无需遍历:

function calcOddSum(n) {
    const k = Math.floor((n + 1) / 2)
    return k * k
}

console.log(calcOddSum(5)) // 输出9
console.log(calcOddSum(4)) // 输出4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:06