【发布时间】:2022-06-13 21:31:40
【问题描述】:
def is_in(char, Astr):
while len(Astr) > 1:
if char == Astr[(int(len(Astr)/2)) : -(int(len(Astr)/2))]:
return True
elif char > Astr[(int(len(Astr)/2)) : -(int(len(Astr)/2))]:
is_in(char, Astr[int(len(Astr)/2):])
elif char < Astr[(int(len(Astr)/2)) : -(int(len(Astr)/2))]:
is_in(char, Astr[:int(len(Astr)/2)])
else:
return False
它应该接受一个字符和一个字符串,然后输出一个布尔值。但它会无限循环即使给定一个字符串中的字符。
【问题讨论】:
-
您是否要对字符串进行二进制搜索?我不确定这是否有意义。无论如何,您不会从递归调用中返回任何内容
-
你似乎永远不会改变
Astr,所以len(Astr) > 1将永远是True,如果它是True一次 -
二分搜索,这是一个练习,但没有反馈,我不知道为什么它不起作用:(。
-
我怀疑你需要一个while循环和递归。您可能应该使用其中一个。
标签: python