我的任务是在单词列表上创建二进制搜索,我提出了 2 个实现(显然还没有提出尚未找到该单词的情况,但这还不是问题),但是当列表缩小到我正在寻找的单词,我的函数没有完成,而是继续运行,直到超过最大递归深度。
我把它打印出来,它清楚地显示了这个词dasList[mid]
,并一遍又一遍地显示它,直到它最终放弃。
def _bisect2(dasList, word):
mid = int(len(dasList)/2)
if word.lower() > dasList[mid].lower():
return _bisect2(dasList[mid: len(dasList)], word)
if word.lower() < dasList[mid].lower():
return _bisect2(dasList[0: mid], word)
else:
return mid
这是由
print(_bisect2(fileList, input('Please type a word')))
我正在使用 Python 3.0 解释器。有什么建议么?