第一次写代码是这样的。但变量 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 }
像这样更改代码后,左边有右边的值。
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 }
有什么区别??请告诉我。
我认为变量 left
在递归后应该具有不同的值,但事实并非如此。
在第一种情况下,left
在递归后应该具有不同的值,但事实并非如此。
解决方法left
以上是您能解释一下为什么在函数内部声明变量时变量具有不同的值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!