输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串abc、acb、bac、bca、cab 和cba。
分析:这是一道很好的考查对递归理解的编程题。
参考网上一个Java例子,但没能理解
func permutation( str []byte, i int) {
if i > len(str) {
return
}
if i == len(str) -1 {
println(string(str[:]))
}else {
for j := i; j<len(str);j ++ {
str[j], str[i] = str[i],str[j]
permutation(str,i+1)
str[j], str[i] = str[i],str[j]
}
}
}
结果
str :=[]byte{'a','b','c'}
permutation(str,0)
abc
acb
bac
bca
cba
cab
网友评论