递归 实现数组全排列

题目:给定一个字符数组:

char[] p = {'a','b','c'};

要求打印出由a b c组成的全排列(即3!= 6个)

** 写在代码前: **
想法是利用递归解决,参考:
数组全排列---递归方法实现(java)
思路是:
a b c 的全排列 =
a + (b 和 c 的全排列——即 bc 和 cd) +
b + (a 和 c 的全排列——即 ac 和 ca) +
c + (a 和 b 的全排列——即 ab 和 ba)

** 给出Java代码: **

public class Permutation{ 
    public static void permute(char[] a, int i){  
        if(a==null || i<0 || i>a.length){  
            return;  
        }  
        if(i==a.length){  
            System.out.println(new String(a));  
        }else{  
            for(int j=i; j

输出:


递归 实现数组全排列_第1张图片
输出结果.png

** 来看重点代码:**

if(i==a.length){  
    System.out.println(new String(a));  
}else{  
    for(int j=i; j

当 i > 3时返回 当i = 3时打印
当 i < 3时循环交换 p[i] 和 p[j](j从i走到2)

你可能感兴趣的:(递归 实现数组全排列)