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

深度嵌套数组整数求和递归函数未通过大深度单元测试排查

问题根因

原有代码的求和逻辑本身没有错误,单测失败的核心原因是JavaScript运行时存在调用栈深度限制:

  • 主流JavaScript引擎(比如Node.js、Chrome使用的V8引擎)默认的函数递归调用栈深度上限约为1万左右,单测构造的10万层嵌套深度远超这个阈值
  • 每递归调用一次arraySum处理下一层嵌套,JS引擎就会向调用栈压入一个新的函数执行上下文,当嵌套深度超过栈上限时会直接抛出RangeError: Maximum call stack size exceeded错误,中断代码执行导致测试失败。
修复方案

将递归实现改为手动维护栈的迭代实现,绕过引擎调用栈的深度限制即可:

export const arraySum = (arr) => {
  let sum = 0;
  const traverseStack = [arr];
  while (traverseStack.length) {
    const currentNode = traverseStack.pop();
    for (const item of currentNode) {
      if (typeof item === "number") {
        sum += item;
      } else if (Array.isArray(item)) {
        traverseStack.push(item);
      }
    }
  }
  return sum;
};

该实现的求和逻辑和原递归版本完全等价,只是把引擎隐式维护的函数调用栈替换成了堆内存中存储的数组栈,数组长度仅受可用堆内存限制,足以支撑百万级深度的嵌套数组处理,可直接通过对应单测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:24:15