Kombinationen können unter Verwendung des folgenden rekursiven Code (von Rosetta inspiriert)Wie rekursiv erhaltene Kombinationen in einem Slice in GO gespeichert werden?
dachte ich es wäre bedruckenden einfach, die Zwischenergebnisse in einem [] int oder die Menge der Kombination in einem [] [] int zu speichern. Aber, da die Funktion rekursiv ist, ist es nicht so einfach als Ersatz die
fmt.Println(s)
von einem
return s
mit einer geringfügigen Änderung des Funktionsausganges zum Beispiel. Ich habe auch versucht, wie ein Zeiger zu füttern
p *[][]int
mit der Variablen „s“ in der rekursiven Funktion, aber ich schlug fehl: -/
Ich denke, es ist ein generelles Problem mit rekursiven Funktionen also, wenn Sie Einige raten, dieses Problem zu lösen, es wird mir sehr helfen!
Vielen Dank im Voraus! ;)
package main
import (
"fmt"
)
func main() {
comb(5, 3)
}
func comb(n, m int) {
s := make([]int, m)
last := m - 1
var rc func(int, int)
rc = func(i, next int) {
for j := next; j < n; j++ {
s[i] = j
if i == last {
fmt.Println(s)
} else {
rc(i+1, j+1)
}
}
return
}
rc(0, 0)
}
Nizza Lösung @mkopriva! Vielen Dank ! – Fred