我目前正在从事一个项目,该项目要求我输出在二进制搜索过程中检查的每个值。
例如,如果输入是3,1,5
和1
,则将输出3,然后输出1。如果在列表中找到,则将输出yes,否则输出no。
另一个示例是,如果用户输入3,1,5
和6
,则将输出3
,然后输出5
和No
这就是我现在所拥有的。
def BinSearch (item,candidates):
if len(candidates)>0:
mid = len(candidates)//2
if item == candidates[mid]:
print (item)
if item < candidates[mid]:
print (candidates[mid])
BinSearch([item,candidates[:mid-1]])
else:
print (candidates[mid])
BinSearch(item,candidates[mid+1:])
haystack = []
for item in input().split(','):
haystack.append(int(item))
haystack.sort()
needles = []
for item in input().split(','):
needles.append(int(item))
for needle in needles:
BinSearch(needle,haystack)
运行上面的代码,
对于输入3,1,5
和1
,我的代码仅输出3
Yes
,而不输出3
1
Yes
答案 0 :(得分:2)
BinSearch([item,candidates[:mid-1]])
应该是BinSearch(item,candidates[:mid-1])
顺便说一句,您应该特别注意发生错误时获得的堆栈跟踪。它会告诉您确切的问题发生在哪一行代码中,并且在那里您应该能够确定错误地传递了参数