私はPythonで再帰的なプログラムを実行しようとしています。リストの最初のインデックスを返します。たとえば、[0、1、5、 6]は0を返します。しかし、最後のリストを渡すと1が返されます。理由はわかりません。リストを返す[i] = iリストのインデックス
コード:
def index(list):
"""Returns the first index of the list where list[i] == i"""
return __auxindex(list, 0, len(list) - 1)
def __auxindex(list, start, end):
if start < end:
half = (start + end) // 2
if list[half] == half:
return half
elif list[half] > half:
return __auxindex(list, start, half)
else:
return __auxindex(list, half + 1, end)
else:
return start
list = input('Values (,): ').split(', ')
list = [int(i) for i in list]
print(index(list))
EDIT:私はリストを命じなければならないことを忘れていました。したがって、このコードは動作します。
これはいつでも行うのですか、特定の入力のみですか?後者の場合は、どちらか?どちらの場合でも、何を返すべきですか? –
私は[0、1、5、6]を初めて渡すときに0を返しますが、私は再び1を返します。 –
変数名としてリストを使用しないでください。一致するインデックス?また、 '[0、1、5、6]'ではなく0を返します。 –