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

如何编写递归JS函数:输入两整数返回区间数组及栈溢出报错解决

代码报错原因分析
  • 递归终止条件错误:原代码仅设定startNum === 0 && endNum === 0时返回空数组作为终止条件,但题目中输入的startNum可以是任意小于等于endNum的整数,例如输入(3,6)时,递归过程中startNum会持续自增1,永远无法满足两个参数都为0的终止条件,导致递归无限执行,最终触发调用栈溢出的报错。
  • 数组构造逻辑错误:原代码的返回数组写法存在两处问题:
    1. 直接将递归调用返回的数组作为单个元素放入新数组,最终会得到多层嵌套的数组结构,不符合题目要求的一维数组格式
    2. 对数值类型的endNum使用扩展运算符...,扩展运算符不能直接作用于非可迭代对象(比如数字),本身属于逻辑错误
正确实现参考
function rangeOfNumbers(startNum, endNum) {
  // 终止条件:两个参数相等时直接返回仅包含该数的数组
  if (startNum === endNum) {
    return [startNum]
  }
  // 拼接当前数 + 递归返回的后续数组
  return [startNum, ...rangeOfNumbers(startNum + 1, endNum)]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:27:00