思路: ①找到所有可能出现在第一个位置的字符,即start与其后面所有与它不同的字符互换位置
②一个位置的字符完成步骤①之后,递归进行下一个位置的互换操作,也就是start+1
③直到start==end,说明最后一个字符以及互换完毕,所以打印第一轮的互换结果,然后返回到上一个位置的for循环中
④再次进行swap操作将位置复原,以实现for循环将下一个小标的元素与当前元素互换
public void recursionArrange(char[] arrayA, int start, int end) {
if(start==end){
for(int i=0;i<arrayA.length;i++){
System.out.print(arrayA[i]);
}
System.out.println();
return;
}
int tempIndex = start;
for(int i=start;i<=end;i++){
swap(arrayA,tempIndex,i);
recursionArrange1(arrayA, tempIndex+1, end);
swap(arrayA,tempIndex,i);
}
}