Here - код игры Go для этой проблемы.golang - перестановка строк - пределы среза вне диапазона
Я пытаюсь написать перестановку строк 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
, я не уверен, что не так.
Примечание: всегда используйте отформатированный код (см. Кнопку «Формат» на странице детской площадки) – VonC