Rumah >pembangunan bahagian belakang >Golang >Bolehkah anda menerangkan mengapa pembolehubah mempunyai nilai yang berbeza apabila ia diisytiharkan di dalam fungsi?
Ini adalah kali pertama saya menulis kod. Tetapi pembolehubah 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 }
Selepas menukar kod seperti ini, sebelah kiri mempunyai nilai di sebelah kanan.
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 }
Apa bezanya? ? Tolong beritahu saya.
Saya fikir pembolehubah left
在递归后应该具有不同的值,但事实并非如此。
在第一种情况下,left
sepatutnya mempunyai nilai yang berbeza selepas rekursi, tetapi tidak.
Penyelesaianleft
Atas ialah kandungan terperinci Bolehkah anda menerangkan mengapa pembolehubah mempunyai nilai yang berbeza apabila ia diisytiharkan di dalam fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!