Python打印所有孩子的无限递归

时间:2013-02-20 01:24:16

标签: python class recursion

我正在尝试创建一个具有递归'printAll'方法的树。

我的代码是:

class Node(object):
    def __init__(self, children=[], tag=None):
        self.children = children
        self.tag = tag

    def appendChild(self, child):
        self.children.append(child)

    def getChildren(self):
        return self.children

    def printAll(self):
        print self.getChildren()
        for child in self.children:
            child.printAll()

当我运行它时,我得到了这个:“在调用Python对象时超出了最大递归深度”。

我猜这与调用子的printAll()方法时将顶级作用域传递给子进程有关,导致无限循环。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试更改默认children

class Node(object):
    def __init__(self, children=None tag=None):
        self.children = children if children is not None else []
        self.tag = tag

    def appendChild(self, child):
        self.children.append(child)

    def getChildren(self):
        return self.children

    def printAll(self):
        print self.getChildren()
        for child in self.children:
            child.printAll()

您可能遇到"mutable default argument"

的案例