Python 为什么我的递归函数给我一个错误输出?

Python 为什么我的递归函数给我一个错误输出?,python,recursion,Python,Recursion,我目前正在做计算机科学的edX课程,在一个递归练习中,我被这个问题困住了。我已经在“纸上”检查了几次代码,但看不出有什么问题 总结问题如下: 使用对分搜索方法,找出isInchar中的字符、aStr函数是否存在于字符串aStr中 以下是我编写的代码: def isInchar,应科院: asrtsorted=sortedaStr 如果lenastrocked==0: 打印“您给我的字符串为空” 如果lenastrocked==1: 打印“您要查找的角色在”+straStrSorted中” 如果c

我目前正在做计算机科学的edX课程,在一个递归练习中,我被这个问题困住了。我已经在“纸上”检查了几次代码,但看不出有什么问题

总结问题如下: 使用对分搜索方法,找出isInchar中的字符、aStr函数是否存在于字符串aStr中

以下是我编写的代码:

def isInchar,应科院: asrtsorted=sortedaStr 如果lenastrocked==0: 打印“您给我的字符串为空” 如果lenastrocked==1: 打印“您要查找的角色在”+straStrSorted中” 如果char==aStrSorted[lenaStrSorted//2]: 打印“您要查找的字符在字符串中”+straStrSorted elif CharastorSorted[Lenastrocked//2]: 返回isInchar,aStrSorted[lenaStrSorted//2:-1] 其他: 打印“您要查找的字符不在字符串中”+straStrSorted isIn'f','abcdegghkl' 错误消息是:

回溯最近一次呼叫上次: 你给我的绳子是空的 文件C:/Users/abkk1l/PycharmProjects/edX/edX-2.py,第29行,在 isIn'f','abcdegghkl' 文件C:/Users/abkkk1l/PycharmProjects/edX/edX-2.py,第22行,在isIn中 返回isInchar,aStrSorted[0:lenaStrSorted//2] 文件C:/Users/abkkk1l/PycharmProjects/edX/edX-2.py,第24行,在isIn中 返回isInchar,aStrSorted[lenaStrSorted//2:-1] 文件C:/Users/abkkk1l/PycharmProjects/edX/edX-2.py,第24行,在isIn中 返回isInchar,aStrSorted[lenaStrSorted//2:-1] 文件C:/Users/abkkk1l/PycharmProjects/edX/edX-2.py,第18行,在isIn中 如果char==aStrSorted[lenaStrSorted//2]: 索引器:列表索引超出范围 考虑到isIn是一个谓词函数名,应该返回True或False,并且对字符串进行排序,不必要地,所有已排序字符串的子字符串似乎都是多余的,我想您可能误解了这个问题,并建议一个更简单的解决方案,如:

def isIn(char, aStr):

    length = len(aStr)

    if length == 0:
        return False

    if length == 1:
        return aStr[0] == char

    halfway = length // 2

    return isIn(char, aStr[:halfway]) or isIn(char, aStr[halfway:])


if isIn('f', 'abcdefghkl'):
    print('The character you are looking for is in the string')
else:
    print('The character you are looking for is not in the string')

它返回你所寻找的字符是在[A'的中间]两次为我没有任何错误在哪个编辑器你已经运行代码?请添加完整的错误回溯到你的问题。你做了一个变量称为STR?如果这是REPL,请尝试del str。为什么所有行都显示为?如何运行此代码?因此,如果查看我的代码而忽略排序子字符串的无用性,问题在于我的函数没有返回true或false?@kamranabasov,这不是您编写的代码的问题,而是您应该编写的代码的设计问题。