问题遇到的现象和发生背景
构建函数,使用二分法对对应数在序列中的索引进行查找。
问题相关代码,请勿粘贴截图
def search(sequence, number, lower, upper):
if lower == upper:
assert number == sequence[upper]
return upper
else:
middle = (lower + upper) // 2
if number > sequence[middle]:
return search(sequence, number, middle + 1, upper)
else:
return search(sequence, number, lower, middle)
运行结果及报错内容
以上代码是正确的,想不通为什么如果number大于sequence[middle]时候,返回的函数里要将下限的middle + 1,而如果小于或等于sequence[middle]时候,这里的上限middle不用减1。
我的解答思路和尝试过的方法
我想要达到的结果
能详细解释一下这里的原因和代码思路最好,谢谢了!