二进制搜索继续而没有结束

时间:2014-09-28 01:16:07

标签: python search recursion

我得到了以下代码段进行调试。我知道错误是它不停地运行,但我不知道如何纠正它。我想知道我应该在哪里看?

 def str_search( data, target, start, end ):

    if start == end:
        return None

    mid_index = ( start + end) // 2
    mid_value = data[mid_index]


    if target == mid_value:
        return mid_index
    elif target < mid_value:
        return str_search( data, target, start, mid_index)
    else:
        return str_search( data, target, mid_index, end)

2 个答案:

答案 0 :(得分:0)

为避免永远跑步,您应该使用

缩小每一步的目标
str_search( data, target, start, mid_index - 1)

str_search( data, target, mid_index + 1, end)

一个好的做法是在每一步打印目标和搜索范围。

还要确保通过

检查边界条件
start > end

因为'mid_index - 1'可能小于'start'。

答案 1 :(得分:0)

好像是

mid_index = ( start + end) // 2

只会在start = 0

时计算正确的mid索引

不应该是

mid_index = ( end - start) // 2