是的。這可以通過遞歸編程來執行。
我假設你不喜歡把這些嵌套的代碼寫在源代碼中 - 就像在你的例子中那樣,因爲這是非常醜陋的編程 - 就像評論員解釋的那樣。
以下(僞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謹慎解釋爲什麼? ;-) –