【发布时间】:2012-05-31 01:24:53
【问题描述】:
我的任务是对单词列表创建二进制搜索,我提出了 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 解释器。有什么建议吗?
【问题讨论】:
-
两种实现都会出现此错误。
-
只是好奇,你忘了预排序
fileList吗? -
标准库已经包含一个
bisect模块。这是作业吗?
标签: python string python-3.x compare