如何编写接收数字参数返回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
相关产品推荐
相关产品推荐

