假设我有这样的模式:
for(let i =0; i < 3; i++){
for(let j =0; j < 3; j++){
for(let k =0; k < 3; k++){
console.log(i,j,k)
}
}
}
好处是我可以访问最内层循环中的所有迭代变量.i
、j
和k
,缺点是它被硬编码为3级嵌套循环.如果我想要第四个,我需要手动添加代码.
我试图使用递归来概括代码,在这里我可以将嵌套循环的数量设置为任意变量.以下是我正在try 的:
const maxNestedLoops = 3;
const iterations = 3;
const indexes = [];
function looper(loopNumber){
for(indexes[loopNumber] = 0; indexes[loopNumber] < iterations; indexes[loopNumber]++){
if(loopNumber < maxNestedLoops){
looper(loopNumber + 1);
}
console.log(indexes);
}
}
looper(0);
第一种方法在控制台中产生以下结果:
0, 0, 0
0, 0, 1
0, 0, 2
0, 1, 0
0, 1, 1
0, 1, 2
0, 2, 0
0, 2, 1
0, 2, 2
...and so on
但是,对于我的递归函数示例,情况不同:
[0, 0, 0, 0]
[0, 0, 0, 1]
[0, 0, 0, 2]
[0, 0, 0, 3]
[0, 0, 1, 0]
[0, 0, 1, 1]
[0, 0, 1, 2]
[0, 0, 1, 3]
[0, 0, 2, 0]
[0, 0, 2, 1]
[0, 0, 2, 2]
[0, 0, 2, 3]
[0, 0, 3, 3]
...and so on
问题是,不仅有四个指标,而不是三个.但有些数值是3
,我预计它只会上升到2
.
感谢您的建议.