【问题标题】:Why does my function to check whether a letter is in a string loop infinitely?为什么我的函数检查一个字母是否在一个字符串中无限循环?
【发布时间】: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) &gt; 1 将永远是True,如果它是True 一次
  • 二分搜索,这是一个练习,但没有反馈,我不知道为什么它不起作用:(。
  • 我怀疑你需要一个while循环递归。您可能应该使用其中一个。

标签: python


猜你喜欢
  • 2016-05-14
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多