【发布时间】:2021-09-27 14:24:05
【问题描述】:
我正在尝试创建一个递归生成器,用于生成数组数组的笛卡尔积的元素 例如。 [[1,2,3], [a,b,c]] : [1,a] -> [1,b] -> [1,c] -> [2,a] ..
此 python 代码有效:
def gen(l):
if not l:
yield ()
else:
for _ in l[0]:
for __ in gen(l[1:]):
yield (_,) + __
为什么没有这段 Javascript 代码?
function* cartesianProduct(arrayOfArrays){
if (arrayOfArrays.length === 0){
yield []
}else{
for(_ of arrayOfArrays[0]){
for(__ of cartesianProduct(arrayOfArrays.slice(1))){
yield __.concat([_])
}
}
}
}
我不知道 yield* 如何适应这个。我已经尝试了所有排列,但它仍然无法正常工作。 Array.from() 表明它具有正确的迭代次数,只是返回了错误的东西。我认为这更多是数组处理的问题......
【问题讨论】:
标签: javascript recursion yield