所以我想做一个递归二进制搜索算法和这里的时候是我使用的伪代码:错误在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'参数传递。 –