如何使用递归javascript生成如下组合?
抱歉,我是一个新手,我的问题措辞有困难,所以我可以在这里搜索,我试过了,但用我的搜索词找不到答案 给定1。一个数组长度为2的数字。不同数字的数组如何通过递归得到这样的组合如何使用递归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] //
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++背景),我想“返回一个函数的指针?什么?等等,这是一个屈服点”。