1
我有兩個轉到功能:類似轉到功能追加字符串和陣列不表現爲預期
func permutation(prefix, str []int) {
n := len(str)
if n == 0 {
fmt.Println(prefix)
} else {
for i := 0; i < n; i++ {
permutation(
append(prefix, str[i]),
append(str[0:i], str[i+1:]...),
)
}
}
}
func perms(prefix, str string) {
n := len(str)
if n == 0 {
fmt.Println(prefix)
} else {
for i := 0; i < n; i++ {
perms(
prefix+string(str[i]),
string(str[0:i])+string(str[i+1:]),
)
}
}
}
第一取整數數組,第二接受字符串。然後它們都計算數組的所有排列或字符串。
我可以像這樣運行它們:
permutation([]int{}, []int{1, 2, 3})
perms("", "123")
他們的輸出是不一樣的:
$ go run main.go
[1 2 3]
[1 3 3]
[3 3 3]
[3 3 3]
[3 3 3]
[3 3 3]
123
132
213
231
312
321
我想有一些細微差別追加,我很想念陣列。我似乎無法弄清楚。任何想法發生了什麼?