我試着寫一個峯值搜索功能,搜索1D列表中的峯值。我在JavaScript中編寫了相同的算法,並且在給予我的Python算法的相同輸入時工作正常。然而,我的Python算法給了我list index out of range error.
下面是我的算法的代碼在Python:峯值搜索功能崩潰
def peak_finder(arr):
mid = len(arr)/2
if arr[mid] < arr[mid - 1]:
return peak_finder(arr[:mid])
elif arr[mid] < arr[mid + 1]:
return peak_finder(arr[mid:])
else:
return arr[mid]
我用來測試它的樣本輸入爲:print(peak_finder([0, 1, 6, 5, 4, 3, 2]))
。
在這行做你的錯誤? – ifconfig
'mid = 7/2'應該是python中的'mid = 7 // 2',否則就是'3.5',其索引將超出範圍。 – kaza
'mid + 1'是長度爲2('mid == len(arr)/ 2 == 2/2 == 1',所以是'mid + 1 == 2')的列表的無效索引。 – chepner