Python3递归,避免变量更改以在不同的递归调用中全局反映
在python3中使用递归时,假设我有一个函数“Python3递归,避免变量更改以在不同的递归调用中全局反映,python,python-3.x,recursion,Python,Python 3.x,Recursion,在python3中使用递归时,假设我有一个函数“f(a,b)”(“b”是list),在“f”中我递归调用了“f”。如果“f”的子实例对列表“b”进行了一些更改,如何避免“b”中的这些更改反映在调用父实例f中?(我不返回“b”)。 例如,请查看下面我的代码。在第二个elif中,我对函数goToDepth进行了两次递归调用。如果一个被调用实例对depthArr进行了更改,那么该更改也会反映在调用函数的depthArr副本中,我不希望看到该副本。如何避免这种情况? 提前多谢 def goToDepth
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
尝试传递列表的副本:
a[:]
创建浅层副本
使用copy
模块创建深度副本(但这可能是糟糕的设计)