Python打印所有子节点时的无限递归

1 投票
1 回答
1814 浏览
提问于 2025-04-17 16:27

我正在尝试创建一个树形结构,并且想要实现一个递归的“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 个回答

2

试着改变你默认的 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()

你可能遇到了一个叫做 “可变默认参数” 的问题。

撰写回答