【问题标题】:Java Program to Show the Permutations of an Integer Array显示整数数组排列的 Java 程序
【发布时间】: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 &lt; prefix; i++) 是什么意思?您应该能够自己找出这一点,例如,只需使用调试器逐行执行代码即可。花 3 分钟了解如何使用它,您将在几天后节省时间。

标签: java recursion permutation


【解决方案1】:

查看你的 for 循环并分析程序 :)

for (int i = 0; i < prefix; i++) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2017-04-03
    相关资源
    最近更新 更多