我正在实现一些算法,其中循环嵌套级别的数量由输入决定。
例如,如果输入是二维的,则有两个嵌套的for循环,如下所示:
for(int i=0; i<N; i++) {
for(int j=i+1; j<N; j++) {
if(table[i][j] == -1) {
for(int c=0; c<C; c++) {
int ii = table[i][c];
int jj = table[j][c];
sort(ii, jj);
if((T[ii][jj] != -1 && T[ii][jj] < l)) {
T[i][j] = l;
break;
}
}
}
}
}
如果输入是 3 维的,那么它会像下面这样:
for(int i=0; i<N; i++) {
for(int j=i+1; j<N; j++) {
for(int k=j+1; k<N; k++) {
if(table[i][j][k] == -1) {
for(int c=0; c<C; c++) {
int ii = table[i][c];
int jj = table[j][c];
int kk = table[k][c];
sort(ii, jj, kk);
if((T[ii][jj][kk] != -1 && T[ii][jj][kk] < l)) {
T[i][j][k] = l;
break;
}
}
}
}
}
如果只有这两种情况,那么我可以编写两个版本的嵌套 for 循环。但输入的维度可以是 2
和 N
之间的任何值。在这种情况下,如何动态控制嵌套循环级别,或者是否有任何替代方法可以解决这个问题?
最佳答案
做到这一点的唯一真正方法是使用递归。
您编写了一个包含单个 for 循环的方法,如果循环需要更深入,则每次循环时,该方法都会使用正确的设置调用自身以运行该嵌套循环。
关于java - 如何动态控制for循环的嵌套层次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21602836/