【问题标题】:Error: maximum recursion depth exceeded in comparison错误:比较超过最大递归深度
【发布时间】:2017-10-08 06:46:20
【问题描述】:

我正在尝试在按字母顺序排列的字符串中查找一个字符...这是代码

def isIn(char, aStr):

        middleChar = len(aStr)//2
        if char == aStr[middleChar]:
            return True
        elif char < aStr[middleChar]:
            LowerHalf = aStr[:middleChar]
            return isIn(char, LowerHalf)
        elif char > aStr[middleChar]:
            UpperHalf = aStr[middleChar:]
            return isIn(char, UpperHalf)
        else:
            return False

print(isIn('a', 'abc'))

它返回真。但是当我把

print(isIn('d', 'abc'))

它返回此错误:比较超出了最大递归深度;而不是 False。

我不明白怎么了。请告诉我我做的逻辑错误在哪里。

【问题讨论】:

    标签: python-3.x recursion


    【解决方案1】:

    使用 d,程序将字符串从 abc 中分离出来并挑选出UpperHalf bc。然后它搜索新字符串bc。然后它按预期从“bc”返回“c”。由于 d > c,程序继续选择该条件并再次返回字符串“c”的上半部分,即 c。因此递归。要解决此问题,您需要一种单独的方法来处理长度为 1 的字符串。

    【讨论】:

    • 谢谢...如果字符串长度为 1,那么该字符肯定在字符串中。否则尝试将字符串分成两半,如果长度为零,则返回 False。
    【解决方案2】:

    最后一个else 没有用——它永远不会被执行。

    二分查找的结束是当数组变成一项时-如果该项不是被搜索的项,则被搜索的项不在数组中。

    【讨论】:

      猜你喜欢
      • 2017-11-05
      • 2013-11-30
      • 2019-03-23
      • 2020-04-01
      • 2022-08-07
      • 2022-01-22
      • 2020-03-14
      • 2020-08-03
      • 2016-12-10
      相关资源
      最近更新 更多