如何使用递归javascript生成如下组合?

如何使用递归javascript生成如下组合?,javascript,Javascript,抱歉,我是一个新手,我的问题措辞有困难,所以我可以在这里搜索,我试过了,但用我的搜索词找不到答案 给定1。一个数组长度为2的数字。不同数字的数组如何通过递归得到这样的组合 const number_of_combinations = 4; // the arrays must be 4 in length const combinations = [1,2,3]; // answer // [1,1,1,1] // [1,1,1,2] // [1,1,1,3] // [1,1,2,1] //

抱歉,我是一个新手,我的问题措辞有困难,所以我可以在这里搜索,我试过了,但用我的搜索词找不到答案

给定1。一个数组长度为2的数字。不同数字的数组如何通过递归得到这样的组合

const number_of_combinations = 4; // the arrays must be 4 in length
const combinations = [1,2,3];

// answer 
// [1,1,1,1]
// [1,1,1,2]
// [1,1,1,3]
// [1,1,2,1]
// [1,1,2,2]
// [1,1,2,3]
// etc....

p、 如果你能给我一个重复的答案,我会马上删除这个问题,我知道这一定是已经在这里得到了回答。

这是递归生成器函数的一个很好的用例:

  function* combine(source, length, prev = []) {
    if(prev.length >= length) {
       yield prev;
       return;
    }

    for(const el of source) {
       yield* combine(source, length, [...prev, el]);
    }
 }

 const result = [...combine([1, 2, 3], 4)];

从0迭代到4,将新项推送到包含其中一个组合项的空数组。组合或置换?它应该是递归解决方案吗?@Jonaswillms抱歉,有什么区别?结果数组必须是完全不同的这个回答你的问题?我总是困惑地看到<代码>函数*/Cube >(来自C++背景),我想“返回一个函数的指针?什么?等等,这是一个屈服点”。