递归函数重复自己而不进入函数

时间:2019-05-26 23:09:32

标签: python python-3.x recursion

帖子已编辑! (如果很复杂,我很抱歉,但是你们以为您无法获得我的代码而拒绝了我)

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)的长度相同,但这是结果(在控制台或调试器中):

enter image description here

self.NodeRel()在没有真正进入self.NodeRel()的情况下重复自身,我必须补充一点,在第一次运行时它确实进入了函数,这是递归无效的

0 个答案:

没有答案