Я имею дело с проблемой программирования
Учитывая два целых числа n и k, вернуть все возможные комбинации чисел k из 1 ... n.
и с входом n = 5, k = 4, выход должен быть [[1,2,3,4], [1,2,3,5], [1,2,4,5], [1,3,4,5], [2,3,4,5]], вот мое решение для Голанга
func combine(n int, k int) [][]int {
result := [][]int{}
comb := []int{}
subcom(0, k, n, &comb, &result)
return result
}
func subcom(s, k, n int, comb *[]int, result *[][]int) {
if k > 0 {
for i := s + 1; i <= n-k+1; i++ {
c := append(*comb, i)
subcom(i, k-1, n, &c, result)
}
} else {
*result = append(*result, *comb)
}
}
Я думаю, что мое решение верное, но оно возвращается [[1 2 3 5][1 2 3 5] [1 2 4 5] [1 3 4 5] [2 3 4 5]].
После отладки я обнаружил, что [1 2 3 4] был добавлен к результирующему фрагменту в начале, но позже изменился на [1 2 3 5], что привело к повторению двух [1 2 3 5]s.Но я не могу понять, что здесь не так.