问题描述
如下代码:
我在定义函数 isSymmetric 时,因为要调用到函数 com_tree,所以我就在函数 isSymmetric 内部定义了函数 com_tree:
func isSymmetric(root *TreeNode) bool {
if root == nil{
return true
}else{
return com_tree(root.Left,root.Right)
}
func com_tree(lefttree *TreeNode,righttree *TreeNode) bool {
if lefttree == nil && righttree == nil{ //左右子树都为nil
return true
}else if lefttree == nil || righttree == nil{ //左右子树有一个为nil
return false
}else if lefttree.Val == righttree.Val{ //左右子树都不为nil
//递归调用
return com_tree(lefttree.Left , righttree.Right) && com_tree(lefttree.Right , righttree.Left)
}else{
return false
}
}
return false
}
报错:
Line 17: Char 10: syntax error: unexpected com_tree, expecting ( (solution.go)
含义:
不被期待的 com_tree,期待 (
原因分析
Go 语言定义函数的时候不能嵌套!!!!!
也就是说,不能在一个函数定义中再定义一个函数。
上例中,不能在定义函数 isSymmetric 的内部再定义函数 com_tree。
解决方案
应该分别定义函数 isSymmetric 和函数 com_tree:
func isSymmetric(root *TreeNode) bool {
if root == nil{
return true
}else{
return com_tree(root.Left,root.Right)
}
return false
}
func com_tree(lefttree *TreeNode,righttree *TreeNode) bool {
if lefttree == nil && righttree == nil{ //左右子树都为nil
return true
}else if lefttree == nil || righttree == nil{ //左右子树有一个为nil
return false
}else if lefttree.Val == righttree.Val{ //左右子树都不为nil
//递归调用
return com_tree(lefttree.Left , righttree.Right) && com_tree(lefttree.Right , righttree.Left)
}else{
return false
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118970.html