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

N个自定义骰子组合递归实现及矩阵存储技术咨询

没问题,我来帮你把这个自定义骰子的递归实现补全,刚好能满足生成N个骰子所有投掷组合并存储为M×N矩阵的需求。先看完整的实现方案:

自定义骰子投掷组合的递归实现方案

一、完善后的完整Dice类代码

function Dice(commonFace, singleFace) {
  // 初始化自定义骰子的6个面
  this.diceFaces = ["critical", commonFace, commonFace, singleFace, "support1", "support2"];

  // 计算总组合数:6的N次方(N为骰子数量)
  this.numCases = function(n) {
    return Math.pow(this.diceFaces.length, n);
  };

  // 核心方法:递归生成所有投掷组合,返回M×N矩阵
  this.generateAllCombinations = function(n) {
    const resultMatrix = [];

    // 递归辅助函数:构建组合的核心逻辑
    function recursiveBuild(remainingDice, currentCombo) {
      // 终止条件:没有剩余骰子时,把当前组合存入结果矩阵
      if (remainingDice === 0) {
        resultMatrix.push([...currentCombo]); // 浅拷贝避免后续回溯修改已存储的组合
        return;
      }

      // 遍历当前骰子的所有面,逐个尝试并递归
      for (const face of this.diceFaces) {
        currentCombo.push(face); // 把当前面加入临时组合
        recursiveBuild.call(this, remainingDice - 1, currentCombo); // 递归处理剩下的骰子
        currentCombo.pop(); // 回溯:移除当前面,尝试下一个可能的面
      }
    }

    // 启动递归:从N个骰子、空组合开始
    recursiveBuild.call(this, n, []);
    return resultMatrix;
  };
}

二、关键逻辑说明

  • 修正总组合数计算:原代码的numCases方法缺少参数,现在改为接收骰子数量n,返回6^n(因为每个骰子固定6个面)。
  • 递归核心逻辑:
    • 用辅助函数recursiveBuild逐步构建组合,参数remainingDice表示还需要处理的骰子数,currentCombo表示当前已构建的部分组合。
    • 终止条件:当remainingDice为0时,把当前组合的拷贝存入结果矩阵(必须用[...currentCombo]做浅拷贝,否则后续回溯会修改已存储的组合)。
    • 回溯机制:每次递归返回后,把当前加入的骰子面从临时组合中移除,确保下一次循环能尝试新的面,这是生成所有组合的关键。
  • 上下文绑定:用call(this)确保递归函数能访问到Dice实例的diceFaces属性。

三、示例用法

// 实例化一个自定义骰子:commonFace设为"普通攻击",singleFace设为"重击"
const battleDice = new Dice("普通攻击", "重击");

// 生成3个骰子的所有投掷组合(总组合数为6^3=216)
const threeDiceCombos = battleDice.generateAllCombinations(3);

// 输出验证
console.log("总组合数:", battleDice.numCases(3)); // 输出216
console.log("组合矩阵预览:", threeDiceCombos.slice(0, 5)); // 输出前5个组合

四、注意事项

  • 性能限制:当N较大时(比如N>10),6^N会指数级增长,可能导致内存溢出或性能问题,此时建议用迭代或生成器分批处理组合。
  • 自定义扩展性:如果需要修改骰子面的数量或内容,直接调整diceFaces数组即可,递归逻辑会自动适配新的面数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:54:02