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

如何编写接收数字参数返回1到该数之和且无死循环的函数

实现方案

1. 基于for循环的实现(适配你现有编码思路)

你目前的代码存在两处问题:一是循环上限固定为100,没有关联传入参数;二是缺少循环体闭合大括号,也没有封装为独立函数。修正后的实现如下:

function getTotal(n) {
  let sum = 0
  // 循环上限绑定传入参数n,i每次自增1,只要n为有限数字就绝对不会触发死循环
  for (let i = 1; i <= n; i++) {
    sum = sum + i
  }
  return sum
}

调用getTotal(100)即可返回结果5050,和你给出的运算示例一致。

2. 数学公式实现(无循环逻辑,零死循环风险)

根据高斯正整数求和公式,1到n的总和可以直接通过公式计算,无需遍历,性能更高且完全没有循环逻辑,不可能出现死循环问题:

function getTotal(n) {
  // 增加边界处理,传入数值小于1时直接返回0,避免异常结果
  return n < 1 ? 0 : n * (n + 1) / 2
}

如果需要严格限定仅接收数字类型参数,可以增加类型校验逻辑:

function getTotal(n) {
  if (typeof n !== 'number' || isNaN(n)) {
    throw new Error('参数必须为有效数字')
  }
  return n < 1 ? 0 : n * (n + 1) / 2
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:39:03