函数是一去不复返True
。我认为它应该返回True
when char == m
,所以你可以将其从if-clause
(即返回False
)并将其放入另一个if
:
if char == m:
return True
elif aStr == '' or len(aStr) == 1:
return False
else:
...
另外,你正在打电话isIn
未定义的方法。我想你想递归调用isitIn
.
比较后char < m
and char > m
你应该"bisect"字符串,所以不要这样做return isitIn(char, aStr[:-1])
nor return isIn(char, aStr[1:])
,而是传递(在递归调用中)字符串的“一半”。
if char < m:
return isitIn(char, aStr[:len(aStr) // 2])
elif char > m:
return isitIn(char, aStr[len(aStr) // 2:])
Edit:以防万一,我尝试过的代码是:
def isitIn(char, aStr):
if aStr == '': # Check for empty string
return False
m = aStr[len(aStr) // 2]
if char == m:
return True
elif len(aStr) == 1:
return False
else:
if char < m:
return isitIn(char, aStr[:len(aStr) // 2])
elif char > m:
return isitIn(char, aStr[len(aStr) // 2:])
return isitIn(char, aStr)