public void pailie(int[] arr,int k,int m)
{
 if(k > m)     
     {          
        for(int i = 0; i <= m; i++)             
             System.out.print(arr[i]+" ");         
         System.out.println();      
         //n++;     
     }     
    else     
     {         
        for(int i = k; i <= m; i++)         
         {             
             swap(arr,k,i);             
             pailie(arr, k + 1, m);             
             swap(arr,k,i);         
         }     
     } 
}
这边的
for(int i = k; i <= m; i++)         
         {             
             swap(arr,k,i);             
             pailie(arr, k + 1, m);             
             swap(arr,k,i);         
         }   
为什么两个交换顺序,还有原理能不能讲一下