Python3递归,避免在不同的递归调用中全局反映变量更改

2024-09-30 16:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

当在python3中使用递归时,假设我有一个函数f(a,b).('b'是list),在'f'中,我递归调用了'f'多次。如果“f”的子实例对列表“b”进行了一些更改,如何避免“b”中的更改反映在调用父对象f中(我不返回“b”)。 例如,请看下面我的代码。在第二个elif中,我对函数goToDepth进行了两次递归调用。如果某个被调用实例对depthArr进行了更改,那么更改也会反映在调用函数的depthArr副本中,我不希望这样。如何避免? 提前多谢了

def goToDepth(headNode,depthArr):
    if(headNode==None):
        return
    elif(not depthArr):
        return
    elif(depthArr[-1]!=1):
        depthArr[-1]=depthArr[-1]-1
        goToDepth(headNode.left,depthArr)
        goToDepth(headNode.right,depthArr)
    elif (depthArr[-1]==1):    
        headNode.left,headNode.right=headNode.right,headNode.left
        depthArr.pop()
        goToDepth(headNode.left,depthArr)
        goToDepth(headNode.right,depthArr)
    else:
        return

Tags: 对象实例函数代码right列表returnleft