Dies ist das erste Mal, dass ich Code schreibe. Aber die Variable left
的值始终为 -1
.
func diameterofbinarytree(root *treenode) int { var longest int var left int var right int max := func(a, b int) int { if a > b { return a } return b } var dfs func(*treenode) int dfs = func(node *treenode) int { if node == nil { return -1 } left = dfs(node.left) right = dfs(node.right) longest = max(longest, left+right+2) return (max(left, right) + 1) } dfs(root) return longest }
Nachdem der Code so geändert wurde, steht auf der linken Seite der Wert auf der rechten Seite.
func diameterOfBinaryTree(root *TreeNode) int { var longest int max := func(a, b int) int { if a > b { return a } return b } var dfs func(*TreeNode) int dfs = func(node *TreeNode) int { if node == nil { return -1 } left := dfs(node.Left) right := dfs(node.Right) longest = max(longest, left+right+2) return (max(left, right) + 1) } dfs(root) return longest }
Was ist der Unterschied? ? Bitte sagen Sie mir.
Ich dachte, die Variable left
在递归后应该具有不同的值,但事实并非如此。
在第一种情况下,left
sollte nach der Rekursion einen anderen Wert haben, aber das ist nicht der Fall.
Lösungleft
Das obige ist der detaillierte Inhalt vonKönnen Sie erklären, warum Variablen unterschiedliche Werte haben, wenn sie innerhalb einer Funktion deklariert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!