[code=java]
[/code]
public static void permute(String soFar, String rest) {
if (rest.length() == 0) { //递归出口
System.out.println(soFar);
}else {
for (int i=0 ;i <rest.length();i++){
String next = soFar + getNumStr(rest,i);
String reaming = rest.substring(0,i)+rest.substring(i+1,rest
.length());
permute(next,reaming);
}
}
}
public static String getNumStr(String str, int i) {
if (i > str.length() - 1 || i < 0) return null;
return str.substring(i, i + 1);
}
public static void main(String[] args) {
permute("","abc");
}
[/code]
“rest”原始的字符串。
”sofar“:目标字符串。
abcd相当于把a取出来,求bcd的排列,第一次递归的出口的情况为:a+bcd的排列-->ab+cd的排列 -->abc +d的排列 -->abcd +null的排列。