递归实现全排列

    科技2026-02-23  6

    全排列作为一个经典的递归问题,就是把一个大问题分解为若干个相互独立的子问题,这些子问题相互独立且与原问题相同。 递归的解这些子问题,然后将这些子问题的解合并得到原问题的解。举个例子,1234的全排列 就等于1(234)的全排列+2(134)的全排列+3(214)+4(231)全排列,同理依次类推。 for循环里面有递归,注意它的执行顺序。执行顺序为先纵后横,先递归下去,再进行i++。

    代码:

    public class 全排列04 { static int[] a= {1,2,3}; public static void main(String[] args) { perm(a,0); } private static void swap(int i,int j) {//交换 int t=a[i]; a[i]=a[j]; a[j]=t; } private static void perm(int[] a,int k) { if(k==a.length) { for(int e:a) { System.out.print(e+" "); } System.out.println(); } for(int i=k;i<a.length;i++) { swap(i,k); perm(a,k+1); swap(i,k);//回溯 } } }
    Processed: 0.021, SQL: 10