在Java中生成所有排列

在Java中生成所有排列,java,permutation,Java,Permutation,可能重复: 我在Java中有一个任意长度的数组,我想生成它们的所有可能排列。对固定长度执行此操作的简单方法是一系列嵌套for循环,但由于数组的长度未知,因此此处不提供此选项。有没有一种简单的方法可以在Java中实现这一点?使用递归函数,而不是循环。每次调用该方法时,该方法应位于数组的较小部分,并在length=0时停止。这应该有助于您设计函数。就性能而言,它可能是最佳的,也可能不是最佳的,但如果您想通过编写相对较少的代码并使其清晰、可维护来实现这一点,您需要的是递归方法,而不是嵌套循环。只需键

可能重复:


我在Java中有一个任意长度的数组,我想生成它们的所有可能排列。对固定长度执行此操作的简单方法是一系列嵌套for循环,但由于数组的长度未知,因此此处不提供此选项。有没有一种简单的方法可以在Java中实现这一点?

使用递归函数,而不是循环。每次调用该方法时,该方法应位于数组的较小部分,并在length=0时停止。这应该有助于您设计函数。

就性能而言,它可能是最佳的,也可能不是最佳的,但如果您想通过编写相对较少的代码并使其清晰、可维护来实现这一点,您需要的是递归方法,而不是嵌套循环。

只需键入
[java]排列
在搜索框中…如果是数组,可以使用array.length;如果是列表,则可以使用List.size()。我不明白“不是一个选项”。@duffymo:所以我想看到你在代码中获得数组长度后,立即生成嵌套for循环…签出guava的Collections2.permutation:@JanZyka-这与嵌套循环无关,你只需要一个堆栈数据结构。在一天结束时,所有的流量控制都只是ifs和gotos。