递归 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;
    }
  }
}