我得到了以下代码段进行调试。我知道错误是它不停地运行,但我不知道如何纠正它。我想知道我应该在哪里看?
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)
答案 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