Задача: конвертировать nested loops to recursion (Java)
[code:11srmwy2]
public static void looper(int n) {
for (int i1 = 1; i1 < n; i1++)
for (int i2 = i1 + 1; i2 < n; i2++)
for (int i3 = i2 + 1; i3 < n; i3++)
for (int i4 = i3 + 1; i4 < n; i4++) {
System.out.printf("\n%2d %2d %2d %2d", i1, i2, i3, i4);
}
System.out.println();
}
[/code:11srmwy2]
Общее решение, с любым заранее заданным числом nested loops есть?
Это похоже на все пермутации. https://stackoverflow.com/questions/424 … ven-string
Или все подмножества
[quote="Alexander":2nlrt6u9]Это похоже на все пермутации. https://stackoverflow.com/questions/424 … ven-string
Или все подмножества[/quote:2nlrt6u9] на самом деле это [url=http://mathworld.wolfram.com/Combination.html:2nlrt6u9]combination[/url:2nlrt6u9]
но все равно не понятно, как конвертировать в рекурсию
комбинаторика это
https://gist.github.com/shaunlebron/2843980
надеюсь поможет
[code:2vgnemse]function printRec(p1,p2,p3,p4,n){
if(p1+1>=n){
return;
}
else if(p2+1>=n){
printRec(p1+1,p1+2,p1+3,p1+4,n)
}
else if(p3+1>=n){
printRec(p1,p2+1,p2+2,p2+3,n)
}
else if(p4+1>=n){
printRec(p1,p2,p3+1,p3+2,n)
}
else {
printRec(p1,p2,p3,p4+1,n)
}
printf("\n%2d %2d %2d %2d", p1, p2, p3, p4);
}[/code:2vgnemse]