1 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)
c.NextSibling
不為 nil 時(shí),似乎循環(huán)正在退出,因?yàn)檠h(huán)值與上一次迭代相同
不確定你的意思,但是是的,你誤解了一些東西。但是for
循環(huán)不是罪魁禍?zhǔn)?。?dāng)它的繼續(xù)條件仍然為真時(shí),它肯定不會(huì)退出。
type Node struct {
? ? NodeId? ? ? ? ? ? ? ? ? int
? ? FirstChild, NextSibling *Node
}
func visit(n *Node) {
? ? for c := n.FirstChild; c != nil; c = c.NextSibling {
? ? ? ? fmt.Printf("seeing node %d\n", c.NodeId)
? ? ? ? visit(c)
? ? }
}
func main() {
? ? c3 := &Node{NodeId: 4}
? ? c2 := &Node{NodeId: 3, NextSibling: c3}
? ? c1 := &Node{NodeId: 2, NextSibling: c2}
? ? root := &Node{NodeId: 1, FirstChild: c1}
? ? visit(root)
}
輸出
seeing node 2
seeing node 3
seeing node 4
- 1 回答
- 0 關(guān)注
- 128 瀏覽
添加回答
舉報(bào)