java - 将嵌套 for 循环编写为 while

标签 java loops for-loop while-loop iteration

有没有办法用一个(while-)循环编写这样的东西?

for(int a = 0; a < u; a++)
    for(int b = a; b < u; b++)
        for(int c = b; c < u; c++)
           .
              .
                 .
                    for(int <n> = <n-1>, <n> < u; <n>++) {
                       // work
                    }

如果我需要这样的东西,通常我会使用递归,所以我想它可以用堆栈来完成,但我更喜欢没有堆栈的解决方案(如果可能的话)。

提前谢谢您!

最佳答案

或者你可以这样做,将索引存储在数组中

int[] indexes = new int[n];
outer: while (true) {
    if (indexes[n-1] == u) {
        int indexesToChange = 1;
        while ((indexesToChange < n + 1) && (indexes[n - indexesToChange] >= (u-1)))
            indexesToChange++;
        if (indexesToChange == n+1)
            break outer;
        indexes[n - indexesToChange]++;
        for (int i = indexesToChange - 1; i > 0; i--)
            indexes[n - i] = indexes[n - indexesToChange];
    } else {
        // do something
        indexes[n-1]++;
    }
}

尚未对其进行测试,因此可能存在实现错误。但我希望我能把这一点讲清楚。

更新
测试发现bug。现在它已修复并按预期工作。

关于java - 将嵌套 for 循环编写为 while,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25781054/

相关文章:

java - Windows 7 - System32 文件夹 - java.exe

Python3 - 在不创建列表的情况下遍历 Linux 目录

Python/Pandas-在趋势转变时应用标签(识别数据集中的局部最大值和最小值)

java - 这个 "for(;;)"循环的条件是什么?

c++ - Stack中的无限循环,实现为 "Linked List"

java - 如何正确加载背景图片?

java - Jython 能取代 Java 吗?

python - 如何在 Python 中连接多个数据帧?

excel - 将 Excel 函数转换为 R

java - 如何在java中对名字和年龄进行排序