public static String getPermutation(int n, int k) {
StringBuilder sb=new StringBuilder();
List<Integer> list=new ArrayList<>();
Collections.addAll(list,0,1,2,3,4,5,6,7,8,9);//加入0,便于操作
rcs(n,k,sb,list);//递归
return sb.toString();
}
public static void rcs(int n,int k,StringBuilder sb,List<Integer> list){
//到最后一层直接将最小的数添加
if(n==1) {
sb.append(list.get(1));
return;
}
//计算下一层总数,即n-1的阶乘
int sum=1;
for (int i = 1; i < n; i++) {
sum*=i;
}
//查找该层的k对应表中第几个数,并从表中去除
sb.append(list.remove((k-1)/sum+1));
rcs(n-1,(k-1)%sum+1,sb,list);//进入下一层,计算k在下一层的位置
}