1
python3
で再帰を使用すると、 'f(a,b)
'という関数があるとします( 'b'はリストです)。回帰的に回。もし 'f'の子インスタンスがリスト 'b'に何らかの変更を加えた場合、どのように 'b'の変更が呼び出し元の親fに反映されるのを避けるのですか? (私は 'b'を返していない)。 以下の私のコードを見てください。 2番目のelifでは、私は関数goToDepth
への2つの再帰呼び出しを行っています。呼び出されたインスタンスの1つが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