【发布时间】:2021-07-22 00:45:07
【问题描述】:
递归内部函数声明golang
应该丑吗?
我目前正在尝试为 leetcode 问题编写递归 DFS(Golang 的新手)
不运行:
当我尝试像这样创建和声明我的内部函数时:
outerFunction (node *TreeNode, target int) bool {
checkSolutions := func(node *TreeNode, total int) bool {
// ... DFS algo
checkSolutions(node.Left)
checkSolutions(node.Right)
}
return checkSolution(root, 0)
}
在递归调用期间我无法访问内部函数并收到错误消息!但是,当我首先(如下)将该函数声明为变量时,它会运行
运行次数:
outerFunction (node *TreeNode, target int) bool {
var checkSolution func(*TreeNode, int) bool
checkSolutions = func(node *TreeNode, total int) bool {
// ... DFS algo
checkSolutions(node.Left)
checkSolutions(node.Right)
}
return checkSolution(root, 0)
}
这是在 Go 中声明递归内部函数的最简洁方式吗?出于某种原因,这对我来说有点冗长,所以我只是想发表这篇文章,看看是否有任何适用于这种情况的 Golang 语法糖,但我错过了。
【问题讨论】:
标签: go recursion depth-first-search