【发布时间】:2014-03-03 09:27:51
【问题描述】:
我正在实现一些算法,其中循环嵌套级别的数量由输入确定。
例如,如果输入是二维的,则有两个嵌套的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 之间的任何值。在这种情况下,如何动态控制嵌套循环级别,或者有什么替代方法可以解决这个问题?
【问题讨论】:
-
我认为递归在这里应该可以提供帮助!
标签: java algorithm loops for-loop