【发布时间】:2015-06-30 18:30:28
【问题描述】:
我做了一个有效的递归函数,这通常是人们想要的:)
但是,当它通过选项“树”时,我想知道为什么它不打印 None 分支。
图表:
g = {
"a" : ['c'],
"b" : ['c'],
"c" : ['a', 'b', 'e', 'd'],
'd' : ['c'],
'e' : ['c', 'b', 'g'],
'f' : ['g'],
'g' : ['f'],
}
功能:
def find_path(self, start_vertex, end_vertex, path=[]):
graph = self.__graph_dict
path.append(start_vertex)
if end_vertex == start_vertex:
return path
for neighbour in graph[start_vertex]:
if neighbour not in path:
extended_path = self.find_path(neighbour, end_vertex, path)
if extended_path:
return extended_path
return None
我不明白的情况是邻居在路径中并且它返回无。
print(self.find_path(a,f))
>> ['a', 'c', 'b', 'e', 'g', 'f']
【问题讨论】:
-
什么是
None分支? -
@recursive 在这种情况下,无分支将是“a”不符合“f”的路径。例如:如果我从 'a' 到 'c' 到 'd' 我不会到达 'f' (你不能倒退)。我称它为“分支”,因为它通过那条路径。不知道有没有更好的解释方式。 “无效”分支会更合适吗?
-
为什么会打印错误的解决方案?
-
@ReutSharabani 为什么不呢?
-
我认为你的例子有点不对劲。要么'b'应该有一个e而不是a c,在路径中的b之后添加一个c,或者将'b'留在路径之外。现在它从 b 到 e 并且该路径不存在