gpt4 book ai didi

java - 如何递归地制作n个嵌套for循环?

转载 作者:IT老高 更新时间:2023-10-28 20:53:47 28 4
gpt4 key购买 nike

我有一个方法必须执行以下操作:

for (int a01 = 1; a01 <= 25; a01++) {
for (int a02 = a01 + 1; a02 <= 25; a02++) {
for (int a03 = a02 + 1; a03 <= 25; a03++) {
...
System.out.println(a01 + "," + a02 + "," + ... + "," + a015);
}
}
}

我想指定嵌套 for 的数量(在上述情况下,我想要 15 个嵌套 for)。有没有办法在这里使用递归编程?

最佳答案

是的。这可以通过递归编程来实现。

我假设你不喜欢在源代码中写下这些嵌套的 for - 就像你的例子一样,因为这真的是丑陋的编程 - 就像评论者解释的那样。

以下(伪 Java 类)代码说明了这一点。我假设嵌套的深度是固定的。那么你实际上喜欢循环一个维度深度的整数 vector 。

int[] length = new int[depth];
int[] counters = new int[depth];

数组 counters 必须初始化为 0 (Arrays.fill(counters,0))。数组 length 必须初始化为相应 for 循环的迭代次数。

我假设您喜欢在内部循环中执行某个操作。我会调用这个 performOperation(int[] counters);- 它取决于多维计数器,即外部for的计数器。

然后你可以通过调用来运行嵌套的for循环

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);
}
}
}

在您的情况下,您的 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);
}

关于java - 如何递归地制作n个嵌套for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19406290/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com