关于java中数组全排列for循环中递归的问题
今天遇到了数组的全排列问题,很头疼,想了半天也没想出来,最后在网上找到了解决方法,就是在for循环中包裹递归,,下面是数组全排列的代码展示,仅供参考。
public class question4 {
private static int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13};//给定一个待排列的数组
public static void main(String[] args){
arrangement(0);调用排列函数
}
private static void arrangement(int k){
if(k == arr.length){//判断是否排列完成,每次完成都会输出排列后的数组
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]);
}
System.out.println();
return;
}else{
for(int i=k;i<arr.length;i++){
//每次将第一个元素与后面元素交换
int t = arr[i];
arr[i] = arr[k];
arr[k] = t;
arrangement(k+1);//递归
//将元素放回原位,方便下一次排列
t = arr[i];
arr[i] = arr[k];
arr[k] = t;
}
}
}
}