Python:在递归函数后打印一个新行

时间:2013-02-03 21:48:45

标签: python recursion

我正在编写一个树遍历方法。输出需要在一行上。但是,当方法完成时,我想插入一个换行符。有没有办法在函数内执行此操作,还是必须从外部调用?

现在我有:

def postorder_transversal(self):
    if self.node == None:
        return 0
    for child in self.children:
        child.postorder_transversal()
    print self.node,

有关如何更改它的任何想法?

3 个答案:

答案 0 :(得分:2)

您可以在函数内部执行此操作:

def postorder_transversal(self, add_newline=True):
    if self.node == None:
        return 0
    for child in self.children:
        child.postorder_transversal(add_newline=False)
    print self.node,
    if add_newline:
        print

虽然在外面做它可能更干净。

答案 1 :(得分:2)

您可以将深度作为参数传递:

def postorder_transversal(self, depth=0):
    if self.node == None:
        return 0

    for child in self.children:
        child.postorder_transversal(depth=depth + 1)

    print self.node,

    if depth == 0:
        print

使用print功能:

from __future__ import print_function

def postorder_transversal(self, depth=0):
    if self.node == None:
        return 0

    for child in self.children:
        child.postorder_transversal(depth=depth + 1)

    print(self.node, end='\n' * (depth == 0))

答案 2 :(得分:0)

此函数退出递归后,将打印一堆节点。在此之后,向stdout添加换行符。所以是的,在外面。