帖子已编辑! (如果很复杂,我很抱歉,但是你们以为您无法获得我的代码而拒绝了我)
self.Nodes是一组节点,每个节点本身都有一组节点(从self.Nodes中随机选择),并存储在相关的
中def NodeRel(self, CurAvailables):
for Node in CurAvailables:
if Node in self.availables:
self.availables.remove(Node)
if len(Node.relevant) == 0:
chosen = sample(CurAvailables, randint(1, 2-len(Node.relevant)))
elif 3 > len(Node.relevant) > 0:
chosen = sample(CurAvailables, randint(0, 2-len(Node.relevant)))
else:
continue
for item in chosen:
item.relevant.add(Node)
Node.relevant.add(item)
if len(item.relevant) > 1 and item in self.availables:
self.availables.remove(item)
def tester(Nody):
self.test.add(Nody)
Nody.checked = True
for relly in Nody.relevant:
if not relly.checked:
self.test.add(relly)
relly.checked = True
tester(relly)
if relly.checked:
self.test.add(relly)
tester(self.Nodes[0])
if len(self.test) != len(self.Nodes):
self.NodeRel(self.Nodes.copy())
用下面的代码运行它:
self.availables = set()
self.availables.update(self.Nodes)
# self.RelevantHandler(self.availables)
self.NodeRel(self.availables.copy())
我希望此函数继续运行并重复执行,直到len(self.test)和len(self.Nodes)的长度相同,但这是结果(在控制台或调试器中):
self.NodeRel()在没有真正进入self.NodeRel()的情况下重复自身,我必须补充一点,在第一次运行时它确实进入了函数,这是递归无效的