Python 重置我的列表的欧拉回路递归语句
我的问题是,当我调用递归欧拉回路(图) 我的轨迹在顶部重置,轨迹=[]。我该怎么做Python 重置我的列表的欧拉回路递归语句,python,python-3.x,Python,Python 3.x,我的问题是,当我调用递归欧拉回路(图) 我的轨迹在顶部重置,轨迹=[]。我该怎么做 (电路应答的代码尚未完成,仍然必须在剩下一条边连接回起始顶点时实现……并且必须找出其他我确信会出现的错误。python新手)您可以将trail作为参数传递给欧拉电路的子调用 为函数指定trail的默认值None,以便知道它是否是顶级调用: def eulerian_circuit(graph): trail = [] for edge in graph: graph.sort(
(电路应答的代码尚未完成,仍然必须在剩下一条边连接回起始顶点时实现……并且必须找出其他我确信会出现的错误。python新手)您可以将
trail
作为参数传递给欧拉电路的子调用
为函数指定trail
的默认值None
,以便知道它是否是顶级调用:
def eulerian_circuit(graph):
trail = []
for edge in graph:
graph.sort()
a,b = edge
if not trail:
trail.append(a)
trail.append(b)
graph.remove((a,b))
print(graph)
if a == trail[-1]:
trail.append(b)
graph.remove((a,b))
print(graph)
if not graph:
return trail
eulerian_circuit(graph)
return trail,graph
eulerian_circuit([('a','b'), ('b','c'), ('a','f'), ('b','d'), ('d','f'), ('b','e'), ('e','g'), ('c','g'), ('f','g'), ('f','h'), ('g','h')])
用法:
def eulerian_circuit(graph, trail=None):
if trail is None:
trail = []
...
eulerian_circuit(graph, trail):
您可以将trail
作为参数传递给eulerian_电路的子调用
为函数指定trail
的默认值None
,以便知道它是否是顶级调用:
def eulerian_circuit(graph):
trail = []
for edge in graph:
graph.sort()
a,b = edge
if not trail:
trail.append(a)
trail.append(b)
graph.remove((a,b))
print(graph)
if a == trail[-1]:
trail.append(b)
graph.remove((a,b))
print(graph)
if not graph:
return trail
eulerian_circuit(graph)
return trail,graph
eulerian_circuit([('a','b'), ('b','c'), ('a','f'), ('b','d'), ('d','f'), ('b','e'), ('e','g'), ('c','g'), ('f','g'), ('f','h'), ('g','h')])
用法:
def eulerian_circuit(graph, trail=None):
if trail is None:
trail = []
...
eulerian_circuit(graph, trail):
非常感谢。现在似乎得到了一个“最大递归”错误。我尝试过添加if b=trail[-1],然后追加(a)和删除((a,b)),但这似乎也不起作用,这告诉我(a,b)不存在要删除的地方。好吧,你没有条件不调用欧拉回路
,一次又一次……我对欧拉回路算法一无所知,我只是在帮助解决编码问题。在修改图形时,您正在迭代图形,这是自找麻烦。我不确定我还能怎么解决这个问题。我想做的是找到一条只使用一次边(顶点可以多次使用)的路径,并从同一个顶点开始和结束。谢谢。。现在似乎得到了一个“最大递归”错误。我尝试过添加if b=trail[-1],然后追加(a)和删除((a,b)),但这似乎也不起作用,这告诉我(a,b)不存在要删除的地方。好吧,你没有条件不调用欧拉回路
,一次又一次……我对欧拉回路算法一无所知,我只是在帮助解决编码问题。在修改图形时,您正在迭代图形,这是自找麻烦。我不确定我还能怎么解决这个问题。我要做的是找到一条只使用一次边(顶点可以多次使用)的路径,并从同一个顶点开始和结束。