递归 DFS 字符串搜索在打字稿中返回未定义
Recursive DFS String search returning undefined in typescript
我正在为这样的字符串开发基于 DFS 的搜索算法
function alias_id_lookup(node, visitedNodeIds, target_id): string{
visitedNodeIds.push(node.id)
if (node.id == target_id){
return node.name as string
}
for (var childNode of node.children) {
if(!visitedNodeIds.includes(childNode.id)){
alias_id_lookup(childNode, visitedNodeIds, target_id)
}
}
}
通过打印语句进行一些调试,我知道找到了正确的节点,但是函数本身返回未定义。
我认为我的递归被破坏了,但是我无法准确地发现我搞砸了什么。
感谢任何帮助,谢谢。
您需要return找到节点的函数调用的结果。
function alias_id_lookup(node, visitedNodeIds, target_id): string{
visitedNodeIds.push(node.id)
if (node.id == target_id) {
return node.name as string
}
for (var childNode of node.children) {
if (!visitedNodeIds.includes(childNode.id)) {
var res = alias_id_lookup(childNode, visitedNodeIds, target_id)
if (res !== undefined) return res;
}
}
}
我正在为这样的字符串开发基于 DFS 的搜索算法
function alias_id_lookup(node, visitedNodeIds, target_id): string{
visitedNodeIds.push(node.id)
if (node.id == target_id){
return node.name as string
}
for (var childNode of node.children) {
if(!visitedNodeIds.includes(childNode.id)){
alias_id_lookup(childNode, visitedNodeIds, target_id)
}
}
}
通过打印语句进行一些调试,我知道找到了正确的节点,但是函数本身返回未定义。
我认为我的递归被破坏了,但是我无法准确地发现我搞砸了什么。
感谢任何帮助,谢谢。
您需要return找到节点的函数调用的结果。
function alias_id_lookup(node, visitedNodeIds, target_id): string{
visitedNodeIds.push(node.id)
if (node.id == target_id) {
return node.name as string
}
for (var childNode of node.children) {
if (!visitedNodeIds.includes(childNode.id)) {
var res = alias_id_lookup(childNode, visitedNodeIds, target_id)
if (res !== undefined) return res;
}
}
}