【发布时间】:2016-01-14 07:32:59
【问题描述】:
我正在尝试使用递归编写 N 个嵌套循环,但是我花了很长时间才实现它。我还没有解决如何比较包含循环索引的数组的所有级别。我的目标是让索引数组遍历所有组合。
例如,如果 N 为 3,则具有迭代的嵌套循环将如下所示:
var i = 10;
while (i--) {
var j = 10;
while (j--) {
var k = 10;
while (k--) {
if (i === 0 && j === 0 && k === 0) { return 0; }
}
}
}
i、j、k 之间的组合从[9, 9, 9] 变为[0, 0, 0]。
我的尝试是这样的:
function nloops(n) {
loop(n, [], 0);
}
function loop(n, array, index) {
if(array.length != n) {
array[index] = 10 - 1;
loop(n, array, index + 1);
} else {
if ((n - index + 1) < 0) {
} else {
if (array[n - index + 1] > 0) {
array[n - index + 1]--; loop(n, array, index + 1);
}
}
}
}
nloops(3);
我的预期行为是数组从[9, 9, 9] 向下移动到[0, 0, 0]。
【问题讨论】:
-
mywiki.wooledge.org/XyProblem 你想达到什么目的?另外,请使用清晰的变量名。这很难理解。
-
@MichaelDibbets 我想得到数组的所有组合,在这个例子中,数组将从 [9, 9, 9] 到 [0, 0, 0] 穿过 [9, 9 , 8], [9, 9, 7], ..., [9, 8, 9], ..., [8, 8, 9], ...等
-
是的,好的。但是,数组中是否只有数组,并且最终您希望使用的对象是您选择的对象?还是只是为了走组合?那么是 [arr[arr[arr[object,object,object]]] 还是 [arr[arr[object,arr[arr[object]]]
-
@MichaelDibbets 我已经阅读了您第一条评论中的链接,我想我知道更多我想要什么。我再提一个问题。
标签: javascript loops recursion