Python 使用递归对分搜索检查字符是否在字符串中

Python 使用递归对分搜索检查字符是否在字符串中,python,search,bisection,edx,Python,Search,Bisection,Edx,我的代码在这里: def isIn(char, aStr): mid = len(aStr)//2 if len(aStr)==0: return False elif len(aStr)==1: if char == aStr: return True elif aStr[mid] == char: return True if mid == 0 and len(aStr) != 1: return False else: if char

我的代码在这里:

def isIn(char, aStr):
mid = len(aStr)//2
if len(aStr)==0:
    return False
elif len(aStr)==1:
    if char == aStr:
        return True
elif aStr[mid] == char:
    return True
if mid == 0 and len(aStr) != 1:
    return False
else:
    if char > aStr[mid]:
        return isIn(char,aStr[mid:] )
    else:
        return isIn(char,aStr[0:mid])
我的代码适用于字符串中存在字符的情况,如果测试用例是这样的,即如果我要在字符串中搜索的字符实际上不存在于字符串中,那么代码将进入无限循环。 例如,在测试用例isIn('m','iloruyz')中,代码进入一个无限循环。

中,如果len(asr)==1:
条件满足,则仅当条件满足时返回True;如果条件不满足,则不返回
False,这就是无限循环发生的地方:)

def isIn(char, aStr):
    mid = len(aStr)//2
    if len(aStr)==0:
        return False
    elif len(aStr)==1:
        if char == aStr:
            return True
        else: # Else return false to stop the infinite loop
            return False
    elif aStr[mid] == char:
        return True
    if mid == 0 and len(aStr) != 1:
        return False
    else:
        if char > aStr[mid]:
            return isIn(char,aStr[mid:] )
        else:
            return isIn(char,aStr[0:mid])