是的。这可以通过递归编程来执行。
我假设你不喜欢把这些嵌套的代码写在源代码中 - 就像在你的例子中那样,因为这是非常丑陋的编程 - 就像评论员解释的那样。
以下(伪Java样)代码说明了它。我假设嵌套的深度是固定的。然后,您实际上喜欢遍历维度深度的整数向量。
int[] length = new int[depth];
int[] counters = new int[depth];
阵列counters
必须被初始化为0(Arrays.fill(counters,0)
)。必须将数组length
初始化为相应for循环的迭代次数。
我假设你喜欢在内循环内执行某个操作。我会称之为 performOperation(int[] counters);
- 它取决于多维计数器,即外部计数器的计数器。
然后你就可以通过调用
nestedLoopOperation(counters, length, 0);
其中
void nestedLoopOperation(int[] counters, int[] length, int level) {
if(level == counters.length) performOperation(counters);
else {
for (counters[level] = 0; counters[level] < length[level]; counters[level]++) {
nestedLoopOperation(counters, length, level + 1);
}
}
}
在你的情况下运行嵌套的for循环您的System.out.println()将
performOperation(int[] counters) {
String counterAsString = "";
for (int level = 0; level < counters.length; level++) {
counterAsString = counterAsString + counters[level];
if (level < counters.length - 1) counterAsString = counterAsString + ",";
}
System.out.println(counterAsString);
}
请不要。不要这样做。 –
只需创建一个方法并让它自己调用15次。这是一个真正的递归方法。 – BalusC
@SotiriosDelimanolis谨慎解释为什么? ;-) –