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

时间:2017-03-03 11:30:20

标签: python python-3.x recursion

python3中使用递归时,请说我有一个功能' f(a,b)'。(' b'是列表) ' 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

1 个答案:

答案 0 :(得分:1)

尝试传递列表副本:a[:]创建浅层副本。

使用copy模块创建深层副本(但这可能是糟糕的设计)。