使用递归的方式输出 n的全排列(Java版)
import java.util.ArrayList;
import java.util.List;
public class Permutation {
static void swap(List<Integer> list,int i,int j){
Integer temp = list.get(i);
list.set(i, list.get(j));
list.set(j,temp);
}
static void permu(List<Integer> list,int start,int end){
if(start==end){
for(Integer e:list){
System.out.print(e+" ");
}
System.out.println();
}else{
//将n个数字全排列的问题变成n-1个数字全排列的问题
//start到end轮流做首位数字,解决了第一位的数字,后面的n-1的数字变成了n-1数字全排列的问题
for(int i = start;i<=end;i++){
swap(list,start,i);
permu(list, start + 1,end);
swap(list,start,i);
}
}
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
System.out.println("请输入整数n:");
Scanner scan = new Scanner(System.in);
int max = scan.nextInt();
for(int i = 1;i<=max;i++){
list.add(i);
}
System.out.println("使用递归输出n个整数的全排列,结果如下:");
permu(list,0,max-1);
}
}