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
相关产品推荐
相关产品推荐

