【发布时间】:2016-10-29 04:03:28
【问题描述】:
Here 是解决此问题的 Go Playground 代码。
我正在尝试使用递归编写一个 golang 字符串排列。
置换函数有两个参数,前缀是一个空字符串 (""),str 是“abc”。代码如下
func main() {
str := "abc"
perm("", str)
}
func perm(prefix string, str string) {
n := len(str)
fmt.Println(n)
if n == 0 {
fmt.Println(prefix)
} else {
for i := 0; i < n; n++ {
perm(prefix+str[i:i+1], str[0:i]+str[(i+1):n])
}
}
}
当我运行此代码时,我按预期显示 n 的值为 3,2,1,0。
我成功获得“abc”,但随后出现“panic: runtime error: slice bounds out of range”错误。
它从不显示第二轮 3,2,1,0,因此它甚至没有达到 b 组合。我觉得如果错误发生在它到达字符串的c 部分但由于它甚至没有到达b 部分,我不确定是什么问题。
【问题讨论】:
-
注意:始终使用格式化代码(请参阅 Playground 页面上的“格式化”按钮)
标签: string go permutation indexoutofboundsexception