#javascript
#javascript
Вопрос:
Я хочу создать простую вложенную систему циклов for, в которой есть один внешний цикл, а затем неопределенное количество очень похожих циклов for, вложенных друг в друга внутри этого
Итак, что-то вроде этого
for (var outerindex = 0; outerindex < x; outerindex // Outer loop
{ for (var innerindex1 = 0; innerindex1 < x; innerindex1 ) //first innerLoop
{
sameFunction(); //
for (var innerindex2 = 0; innerindex2 < x; innerindex2 ) //second innerloop
{
sameFunction();
for (var innerindex...
{
.....
}
}
}
}
Итак, что я хочу сделать, это изменить количество внутренних циклов на переменную. Я думаю, мне нужно использовать какую-то функцию, но у меня есть идея, с чего начать.
Ответ №1:
Для этого используйте рекурсию:
function myLoop(i) {
if (i > 0) {
console.log('Inner function call!');
myLoop(i - 1);
} else {
console.log('Final call');
}
}
myLoop(7);
Ответ №2:
Вы можете достичь этого с помощью рекурсии.
Просто вызовите функцию с требуемой глубиной циклов for, запустите цикл и вызовите эту функцию с глубиной — 1 .
function recurse(depth){
if(depth <= 0) //Terminal statement to end the recursion
return;
for(var innerindex = 0; innerindex < depth; innerindex ){
someFunction(depth,innerindex);
recurse(depth -1);
}
}
function someFunction(depth, innerindex){
console.log('someFunction(depth: ' depth ', innerindex:' innerindex ');');
}
recurse(3);
Но для глубокого (например,> 100) depth
он съест весь ваш стек и потребует много памяти.