Python 如何从递归函数返回列表?

Python 如何从递归函数返回列表?,python,recursion,Python,Recursion,我试图从下面的递归函数返回一个列表,我应该在哪里执行它?。 我想我无法做到这一点,因为我没有完全理解所有的函数步骤,那么如何使用调试器来遵循递归的每个步骤呢?(皮查姆) 谢谢你的帮助 def parentheses_helper(open, close, word, lst): """ get 2 equal integers and return all the combination of balanced parantheses ""

我试图从下面的递归函数返回一个列表,我应该在哪里执行它?。 我想我无法做到这一点,因为我没有完全理解所有的函数步骤,那么如何使用调试器来遵循递归的每个步骤呢?(皮查姆) 谢谢你的帮助

def parentheses_helper(open, close, word, lst):
    """ get 2 equal integers and return all the combination of balanced parantheses """
    if open == 0 and close == 0:
        lst.append(word) 
        print(lst)
    if open > close:
        return
    if open > 0:
        parentheses_helper(open - 1, close, word + '(', lst)
    if close > 0:
        parentheses_helper(open, close - 1, word + ')', lst)


def parentheses(n):
    parentheses_helper(n, n, '', [])

如果需要从函数
圆括号
返回列表,可以在其中创建一个列表变量,并传递到
圆括号
,然后返回该变量。这将起作用,因为您正在修改括号内的相同列表(列表未被复制)

def括号(n):
lst=[]
圆括号(n,n,,,lst)
返回lst

print(lst)返回lst关于
return lst
而不是
return
?您期望的正确答案是什么?太棒了!这非常有效。我很想知道为什么会这样?helper函数正在修改括号中的lst func?@navehroliir是的,它在修改
lst.append
在适当的位置修改列表。当您将列表传递给函数时,它仍然是同一个对象,不会被复制