小编Alg*_*ner的帖子

是否可以将此递归解决方案(打印括号)转换为迭代版本?

考虑到标签出现的次数,我需要打印打印有效标签"<"和">"的不同变体,下面是使用递归的python中的解决方案.

def genBrackets(c):
    def genBracketsHelper(r,l,currentString):
        if l > r or r == -1 or l == -1:
            return
        if r == l and r == 0:
            print currentString
        genBracketsHelper(r,l-1, currentString + '<')
        genBracketsHelper(r-1,l, currentString + '>')
        return
    genBracketsHelper(c, c, '')

#display options with 4 tags     
genBrackets(4)
Run Code Online (Sandbox Code Playgroud)

我很难真正理解这一点,并希望尝试将其转换为迭代版本,但我没有取得任何成功.

根据这个线程:每个递归都可以转换成迭代吗? - 它看起来应该是可能的,唯一的例外似乎是Ackermann功能.

如果有人有关于如何查看Eclipse中维护的"堆栈"的任何提示 - 这也将不胜感激.

PS.这不是一个功课问题 - 我只是想更好地理解递归到迭代转换.

由Matthieu M.编辑,提供更好的可视化输出示例:

>>> genBrackets(3)
<<<>>>
<<><>>
<<>><>
<><<>>
<><><>
Run Code Online (Sandbox Code Playgroud)

iteration algorithm recursion tail-recursion

6
推荐指数
1
解决办法
540
查看次数

标签 统计

algorithm ×1

iteration ×1

recursion ×1

tail-recursion ×1