考虑到标签出现的次数,我需要打印打印有效标签"<"和">"的不同变体,下面是使用递归的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)