Maison >développement back-end >Golang >Pouvez-vous expliquer pourquoi les variables ont des valeurs différentes lorsqu'elles sont déclarées à l'intérieur d'une fonction ?
C'est la première fois que j'écris du code. Mais la 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 }
Après avoir modifié le code comme ceci, le côté gauche a la valeur sur le côté droit.
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 }
Quelle est la différence ? ? s'il vous plaît dites-moi.
Je pensais que la variable left
在递归后应该具有不同的值,但事实并非如此。
在第一种情况下,left
devrait avoir une valeur différente après la récursion, mais ce n'est pas le cas.
Solutionleft
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!