【问题标题】:how to use iterator in recursive function in python?如何在python的递归函数中使用迭代器?
【发布时间】:2011-09-13 02:08:04
【问题描述】:

我想转换我的代码,这样我就不必使用额外的变量(即下面示例中的 s)。我知道有一种方法可以使用迭代器,但我不知道如何。有人可以帮忙吗?非常感谢。

from numbers import Number

a = [[[1,2],[3,4]],[[5,6],[7,8]]]


def trav(root,s):
    if isinstance(root,Number):
        print(str(root) + " -> " + s)
    else:
        s = s + "0"
        trav(root[0],s)
        s = s[:-1]

        s = s + "1"
        trav(root[1],s)
        s = s[:-1]

s = ""
trav(a,s)

【问题讨论】:

  • s = s + "0" 会比s += "0" 更整洁。

标签: python variables recursion iterator global


【解决方案1】:

为什么不...

def trav(root, s=""):

然后您可以省略您的s = "" 行并将其称为trav(a)?此外,如果您愿意只内联一两件事,则可以减少切片:

from numbers import Number

a = [[[1,2],[3,4]],[[5,6],[7,8]]]


def trav(root, s=""):
    if isinstance(root, Number):
        print("%s -> %s" % (root, s))
    else:
        trav(root[0], s + "0")
        trav(root[1], s + "1")

trav(a)

请注意,这些都与迭代器无关;我不确定你在想什么。 s 这里充当 accumulator 参数;也许这就是你想到的术语?

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 2021-12-09
    • 2019-04-03
    • 1970-01-01
    • 2021-09-15
    • 2019-03-01
    • 2020-01-22
    • 2013-09-21
    相关资源
    最近更新 更多