You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python递归函数return语句未返回正确结果求助

递归判断图中两点路径问题:返回值不符合预期的原因及修复

你的代码核心问题在于递归调用时没有传递返回结果:当你在for循环里调用hasPath(graph,i,des)时,只是执行了这个递归函数,但没有捕获它的返回值,也没有在找到路径时立刻终止并返回True。所以即使深层递归找到了目标(打印了'Yes'),上层函数还是会继续走完循环,最后执行return False,导致最终返回错误的结果。

修复后的代码

graph = {
'f': ['g', 'i'],
'g': ['h'],
'h': [],
'i': ['g', 'k'],
'j': ['i'],
'k': []
}

def hasPath(graph,source,des):
    arr = graph[source]
    if des in arr:
        print('Yes')
        return True
    for i in arr:
        # 捕获递归返回值,找到路径立刻返回True
        if hasPath(graph,i,des):
            return True
    # 所有分支都没找到路径,返回False
    return False

print(hasPath(graph,'f','k'))

关键修改点

  • 在for循环内部,每次递归调用后判断返回结果:如果递归返回True,说明已经找到路径,直接return True,把结果传递回上层调用
  • 只有当所有递归分支都没找到路径时,才最终返回False

这样修改后,当从f递归到i再找到k时,递归的True结果会逐层传递回来,最终函数会返回正确的True值。

内容的提问来源于stack exchange,提问作者Tushar Sethi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:35:23