Я пытаюсь написать N число вложенных циклов с рекурсией, но для этого я слишком долго занимался этим. Я не решил, как сравнить все уровни массива, который содержит индекс петель. Моя цель - заставить массив индексов пройти все комбинации.JavaScript - Как создать переменные вложенные циклы с рекурсией?
Например, если 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]
.
http://mywiki.wooledge.org/XyProblem Что вы пытаетесь достичь? Кроме того, используйте чистые имена переменных. Это очень сложно. – Tschallacka
@MichaelDibbets Я хочу получить все комбинации массива, в этом примере массив будет идти от [9, 9, 9] до [0, 0, 0], проходящих через [9, 9, 8], [9, 9, 7], ..., [9, 8, 9], ..., [8, 8, 9], ... и т. Д. – forkfork
да, ладно. Но будут ли только массивы в массивах и объект по вашему выбору в конце, с которым вы хотите заняться? или это просто ходить комбо? Так [arr [arr [arr [object, object, object]]] или это [arr [arr [object, arr [arr [object]]] – Tschallacka