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);
}
为什么两个交换顺序,还有原理能不能讲一下
{
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);
}
为什么两个交换顺序,还有原理能不能讲一下
所以每个递归分支前后要保持状态