所以我想做一個遞歸二進制搜索算法和這裏的時候是我使用的僞代碼:錯誤在Python二進制搜索算法使用僞
BINARY-SEARCH(X, A, start, end)
1 if start > end then
2 return False
3 middle = ((end - start)/2) + start
4 if X = A[middle] then
5 return True
6 else if X < A[middle] then
7 return BINARY-SEARCH(X, A, start, middle - 1)
8 else
9 return BINARY-SEARCH(X, A, middle + 1, end)
,這裏是我的程序:
def binarySearchRec(value, list, start, end):
if start > end:
return False
middle = ((end - start)/2) + start
if value == list[middle]:
return True
elif value < list[middle]:
return binarySearchRec(value, list, start, middle - 1)
else:
return binarySearchRec(value, list, middle + 1, end)
,所以我不斷收到的索引錯誤,每當我使用的值是不在列表中,但它工作正常,發現是在列表中的值,任何幫助將不勝感激
提示:Python的列表是零索引 – miraculixx
您能舉例說明價值,列表,開始和結束該產品的例外情況嗎?此外,您可能希望使用列表以外的變量名稱,因爲您正在跺跺內置類型。當我使用列表類型時,通常使用數據作爲名稱。 –
僞代碼使用包含上限,這意味着「結束」是一個有效的索引。您必須將'len(a) - 1'作爲'end'參數傳遞。 –