【发布时间】:2019-08-20 20:31:41
【问题描述】:
尝试使用递归显示 int 数组的排列,但是由于某种原因,当我调用该函数时它不会打印任何内容。我缺少的主要功能中有什么吗?
public static void Permutation(int[] a, int prefix) {
int length = a.length;
if (length == prefix) {
printArray(a);
}
else {
for (int i = 0; i < prefix; i++) {
swap(a, prefix, i);
Permutation(a, prefix + 1);
swap(a, prefix, i);
}
}
}
public static void swap(int[] a, int x, int y) {
int z = a[x];
a[x] = a[y];
a[y] = z;
}
public static void printArray(int[] thing) {
System.out.println("\n");
for (int x = 0; x < thing.length; x++)
System.out.print(thing[x]);
}
public static void main(String[] args) {
int a[] = { 1, 2, 3 };
Permutation(a, 0);
}
假设我有一个 1、2 和 3 的 int 数组。输出应该是
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
【问题讨论】:
-
如果前缀为 0,
for (int i = 0; i < prefix; i++)是什么意思?您应该能够自己找出这一点,例如,只需使用调试器逐行执行代码即可。花 3 分钟了解如何使用它,您将在几天后节省时间。
标签: java recursion permutation