1
当在python3
中使用递归时,假设我有一个函数'f(a,b)
'('b'是列表)并且在'f'中我调用'f'几个次递归。如果'f'的女儿实例对列表'b'进行了一些更改,如何避免'b'中的这些更改反映在调用父级f中? (我不回'B')。 例如看看我的代码如下。在第二个elif中,我正在对函数goToDepth
进行两次递归调用。如果其中一个被调用的实例更改为depthArr
,则该更改将反映在调用函数depthArr
的副本中,这也是我不想要的。如何避免这种情况? 非常感谢!Python3递归,避免变量的变化,以反映全局在不同的递归调用
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