在 Python 中,我可以进行递归,例如:def dfs(a, path): if len(a) == 0: print(path) return for i in range(len(a)): dfs(a[:i]+a[i+1:], path+str(a[i]))if __name__ == "__main__": a = [10, 2] dfs(a, "")它将输出:102210但是,如果我在 Go 中做类似的事情,package mainimport "fmt"func dfs(ns []int, path string) { if len(ns) == 0 { fmt.Println(path) return } for i, v := range ns { nx := append(ns[:i], ns[i+1:]...) dfs(nx, fmt.Sprintf("%v%v", path, v)) }}func main() { nums := []int{10, 2} dfs(nums, "")}输出将是:10222我猜这种行为是由于切片链接到 Go 上的下划线数组,但我不明白如何以及如何调试它。你能指出我的问题吗?
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消