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

JavaScript实现1~n取k个数组合的代码输出与预期不符问题排查

问题原因分析
  • 控制台仅显示3组输出是运行环境的控制台自动折叠了相似内容导致的,你的代码打印逻辑没有问题,点击控制台输出条目前的折叠箭头就能看到完整的10组输出。
  • 你代码中ans数组的最终返回结果会不符合预期:因为arr是引用类型,直接执行ans.push(arr)时存入的是arr的内存引用,后续arr.pop()修改数组时,ans中所有已存入的引用指向的内容都会同步变化,最终ans会包含10个空数组。
修复方案

如果需要ans中存储正确的组合结果,只需在存入时拷贝当前arr的实际值即可,将ans.push(arr)修改为ans.push([...arr])。
修复后完整代码如下:

let ans = [],
  arr = [];

function makeCombination(n, k, low = 1) {
  if (k == 0) {
    // 拷贝当前数组值存入结果,避免后续操作修改已保存的组合
    ans.push([...arr]);
    console.log(...arr);
    return;
  }

  for (let i = low; i <= n; i++) {
    arr.push(i);
    makeCombination(n, k - 1, i + 1);
    arr.pop();
  }
  return ans;
}

var n = 5;
var k = 3;

makeCombination(n, k);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:03