在 Python 中,我可以進(jìn)行遞歸,例如: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 上的下劃線數(shù)組,但我不明白如何以及如何調(diào)試它。你能指出我的問題嗎?
在切片上運行遞歸函數(shù)時出現(xiàn)意外行為
幕布斯7119047
2022-05-18 16:58:25