在考虑如何制作一个输出来自给定输入数组的所有可能组合的Java程序之后,我想了很长时间,我终于想到通过结合递归和迭代来实现这一点。
我的代码输入一个char数组{a,b,c}
,并且应该给出一个长度为3的所有可能数组的输出。
我的代码是 -
public class Brute {
char[] val = new char[] { 'a', 'b', 'c' };
void work(char arr[], int i) {
for (int j = 0; j <= 2; j++) {
if (i <= 2) {
arr[i] = val[j];
}
while (i <= 2) {
i = i + 1;
if (i <= 2) {
work(arr, i);
System.out.println(new String(arr));
}
}
}
}
public static void main(String args[]) {
Brute b = new Brute();
char arr[] = new char[] { 'p', 'q', 'r' };
b.work(arr, 0);
}
}
输出结果为:
aaa
aaa
aaa
我无法理解为什么它给了我这个输出而不是所有组合。
答案 0 :(得分:0)
问题在于,不是将i的值重新初始化为0,而是将i的值始终保留为3,并将i的递增值(即3)传递给进一步的递归调用。