【发布时间】:2015-11-13 20:52:40
【问题描述】:
所以我正在尝试制作递归二进制搜索算法,这是我正在使用的伪代码:
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 列表是零索引的
-
你能给我们举个例子来说明价值、列出、开始和结束那个产品的例外吗?此外,您可能希望使用 list 以外的变量名称,因为您正在使用内置类型。当我使用列表类型时,我通常使用数据作为名称。
-
伪代码使用包含上限,这意味着
end是一个有效索引。您必须将len(a) - 1作为end参数传递。
标签: python algorithm recursion indexing