私がやろうとしているのは、リストを再帰的に処理することです。私はPythonを初めて使用するので、すべてのコードを作成して実行するために送信したときに、奇妙な問題に直面しました.再帰関数を呼び出した後にリストが変更されました. これをテストするために、次のように書きました。
def recur(n):
n.append(len(n))
print '>',n
if n[-1]<5: recur(n)
print '<',n
そして関数を呼び出しました:
recur([])
結果は次のとおりです。
> [0]
> [0, 1]
> [0, 1, 2]
> [0, 1, 2, 3]
> [0, 1, 2, 3, 4]
> [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
私が期待していたのは
> [0]
> [0, 1]
> [0, 1, 2]
> [0, 1, 2, 3]
> [0, 1, 2, 3, 4]
> [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4, 5]
< [0, 1, 2, 3, 4]
< [0, 1, 2, 3]
< [0, 1, 2]
< [0, 1]
< [0]
、単純な整数変数の場合と同様:
def recur(n):
n=n+1
print '>',n
if n<5: recur(n)
print '<',n
recur(0)
> 1
> 2
> 3
> 4
> 5
< 5
< 4
< 3
< 2
< 1
どうすれば状況を修正でき、何が間違っていると理解しましたか?