有没有办法用一个(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]++;
    }
}


还没有测试,所以可能是实施错误。但我希望我能指出这一点。

更新
测试并发现错误。现在,它已修复并可以按预期工作。

09-12 09:25