Java嵌套数组到递归方法

Java嵌套数组到递归方法,java,algorithm,recursion,recursive-datastructures,Java,Algorithm,Recursion,Recursive Datastructures,这是我的代码,用于从数组中查找所有组合 有没有递归的方法来增加编码的灵活性 结果如下: 1324 1342 1234 1243 1432 1423 3124 3142 3214 3241 3412 3421 2134 2143 2314 2341 2413 2431 4132 4123 4312 4321 4213 4231 主类{ //从数组中查找所有组合 公共静态void findAllConbinationFromArray(整数[]){ for(int i=0;i

这是我的代码,用于从数组中查找所有组合 有没有递归的方法来增加编码的灵活性

结果如下: 1324 1342 1234 1243 1432 1423 3124 3142 3214 3241 3412 3421 2134 2143 2314 2341 2413 2431 4132 4123 4312 4321 4213 4231

主类{
//从数组中查找所有组合
公共静态void findAllConbinationFromArray(整数[]){
for(int i=0;i
这是一种递归方法,用于生成数组的所有置换

public class Permute {

void swap(int[] arr, int x, int y) {
    int temp = arr[x];
    arr[x] = arr[y];
    arr[y] = temp;
}

void permute(int[] arr) {
    permute(arr, 0, arr.length - 1);
}

//i - start index
//n - end index
void permute(int[] arr, int i, int n) {
    int j;
    if (i == n)
        System.out.println(Arrays.toString(arr));
    else {
        for (j = i; j <= n; j++) {
            swap(arr, i, j);
            permute(arr, i + 1, n);
            swap(arr, i, j); // swap back
        }
    }
}

public static void main(String[] args) {
    int arr[] = { 1, 2, 3, 4 };
    new Permute().permute(arr);
}
公共类排列{
无效交换(整数[]arr,整数x,整数y){
int temp=arr[x];
arr[x]=arr[y];
arr[y]=温度;
}
无效排列(int[]arr){
排列(arr,0,arr.length-1);
}
//i-开始索引
//n端索引
无效排列(int[]arr,int i,int n){
int j;
如果(i==n)
System.out.println(Arrays.toString(arr));
否则{

对于(j=i;j,欢迎重复您的答案。如果答案正确,请毫不犹豫地将正确答案标记为;),您是否有任何非递归方法来解决此问题efficiently@alantheweasel如果你想要一个更好的非递归解决方法,你必须发布另一个问题。@alantheweasel这篇文章将帮助你。
public class Permute {

void swap(int[] arr, int x, int y) {
    int temp = arr[x];
    arr[x] = arr[y];
    arr[y] = temp;
}

void permute(int[] arr) {
    permute(arr, 0, arr.length - 1);
}

//i - start index
//n - end index
void permute(int[] arr, int i, int n) {
    int j;
    if (i == n)
        System.out.println(Arrays.toString(arr));
    else {
        for (j = i; j <= n; j++) {
            swap(arr, i, j);
            permute(arr, i + 1, n);
            swap(arr, i, j); // swap back
        }
    }
}

public static void main(String[] args) {
    int arr[] = { 1, 2, 3, 4 };
    new Permute().permute(arr);
}