Here은이 문제의 이동 코드입니다.골란 - 문자열 순열 - 슬라이스 범위가 범위를 벗어남
재귀를 사용하여 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