我想在Python中做一個遞歸程序,它返回與它的值相等的列表的第一個索引,例如:[0,1,5, 6]返回0.但是,當我通過最後一個列表時,它返回1,我不知道爲什麼。返回列表[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))
編輯:我忘了,名單必須訂購。所以這段代碼有效。
它*總是*做到這一點,或只爲某些投入?如果後者,哪個?無論哪種情況,它應該返回什麼? –
它有時,第一次當我通過[0,1,5,6]它返回0,但是當我再次返回1 –
不要使用列表作爲變量名稱,也如果沒有元素它在一個匹配索引?另外我得到1代表'[0,1,5,6]'不是0 –