java - 如何动态控制for循环的嵌套层次?

标签 java algorithm loops for-loop

我正在实现一些算法,其中循环嵌套级别的数量由输入决定。

例如,如果输入是二维的,则有两个嵌套的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 循环。但输入的维度可以是 2N 之间的任何值。在这种情况下,如何动态控制嵌套循环级别,或者是否有任何替代方法可以解决这个问题?

最佳答案

做到这一点的唯一真正方法是使用递归。

您编写了一个包含单个 for 循环的方法,如果循环需要更深入,则每次循环时,该方法都会使用正确的设置调用自身以运行该嵌套循环。

关于java - 如何动态控制for循环的嵌套层次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21602836/

相关文章:

java - 使用基类对象调用派生类方法

java - Spring JdbcTemplate.update() 没有更新行

php - 如何从两个数组中删除重复对?

在 R 中的 data.table 中用 0 替换所有 NA

JQuery:循环输入元素

java - 带有 Java 应用程序的 Qlik Sense Engine

java - 重新验证 JList - 自定义元素

c - Dijkstra在C语言中的最短路径算法——改变参数问题

在加权项目之间分配点的算法?

python - python 中 epsilon 为 0.0001 的递归平方根循环