有没有办法用一个(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/