私はPython 2.7で再帰的な挿入ソート関数を書いていました。Pythonの再帰的な挿入ソート関数の予期しない動作
最初は、私はそれが機能の再帰としなければならなかった推測エラーTypeError: can only assign an iterable
、でしたが、私は私のコードでは特に問題にならないでください:
def recursiveInsertionSort(v):
if len(v)!=2:
v[0:len(v)-1]=recursiveInsertionSort(v[0:len(v)-1])
i=len(v)-1
while v[i-1]>v[i]:
v[i-1], v[i]=v[i], v[i-1]
i-=1
if i==0: return v
それはだ第二の問題おそらく接続されている。
この場合、私もエラーは表示されませんでしたが(私に教えてください理由がわかっています)、機能はうまく機能しませんでした。
def recursiveInsertionSort(v):
if len(v)!=2:
recursiveInsertionSort(v[0:len(v)-1])
i=len(v)-1
while v[i-1]>v[i] and i>0:
v[i-1], v[i]=v[i], v[i-1]
i-=1
私はこの問題を推測として、私は私の間違いを訂正機能を再帰的に使用していました:
def recursiveInsertionSort(v):
if len(v)!=2:
temp=v[0:len(v)-1]
recursiveInsertionSort(temp)
v[0:len(v)-1]=temp
i=len(v)-1
while v[i-1]>v[i] and i>0:
v[i-1], v[i]=v[i], v[i-1]
i-=1
しかし、私は本当にあなたが私を助けることができ、これらの2つの動作の原因を理解したいと思います?行うためのよりよい方法があるのなら、私も聞いて
EDIT:あなたの最初の実装と
temp=v[0:len(v)-1]
recursiveInsertionSort(temp)
v[0:len(v)-1]=temp
私は気づいていませんでしたが、 "タイプエラー"について説明していません。私は、問題がv [0:len(v)-1] = recursiveInsertionSort(v [0:len(v))で問題を抱えていたため、 -1])、しかし、なぜ私は知らない。 –
'TypeError'は、以前の再帰呼び出しでスライスに' None'を割り当てようとすると発生します。 – Blckknght
私は、例外がどこから来るのかを少し詳しく説明し、他の実装の改善を提案しました。 – Blckknght