我的功能有点类似于我试图递归的旅行商问题。我认为它正在工作,但我在使大型数据集上的附加功能正常运行时遇到了一些麻烦。这是我所拥有的... main应该被写为递归,所以我可以调用可变数量的递归... https://play.golang.org/p/Lz8arHybFr
hello
world
hello
wo
答案 0 :(得分:0)
我想出了2次递归,请检查一下你的数据:
(我想你会把它做成平行,所以用2次递归会更容易,就像go rec2(...)
一样)
func main() {
rec(0,0)
}
func rec(a, b int) {
if a >= len(fl) || b >= len(fl) || a == b {
return
}
aa, bb := fl[a], fl[b]
if !aa.Connects(bb) {
rec(a, b+1)
return
}
l := []*Foo{
aa, bb,
}
completeList = append(completeList, l)
rec2(0, a, b)
}
func rec2(c, a, b int) {
if c >= len(fl) || a == c || b == c {
return
}
cc, aa, bb := fl[c], fl[a], fl[b]
if cc.Connects(bb) && aa.Completes(cc) {
l := []*Foo{
aa, bb, cc,
}
completeList = append(completeList, l)
}
rec2(c+1, a, b)
}