【问题标题】:Breaking out of a recursive loop in python打破python中的递归循环
【发布时间】:2022-10-24 05:13:16
【问题描述】:

我使用递归循环来查找由一个字母变化形成的单词之间的路径。例如:

人-->切割

男人 能够 猫 切

递归函数使用 while 查看单词的单字母邻居,并找到与目标单词最相似的邻居。然后使用这个词,它会更深,达到比起始词和目标词之间的字母差多两个的深度。 (这对于大多数情况来说似乎就足够了,尽管证明这是另一回事)

问题是我的递归函数给我带来了麻烦。为了节省您阅读我制作的所有类和函数的时间,我创建了一个产生相同错误的精简版本。

def recurse(c):
  try:
    while c>0:
      print(c)
      c-=1
      if c==5:
        raise StopIteration

      recurse(c-1)
                  
  except StopIteration:
    print("We found the word. Stop the recursion.")
  
  
recurse(12)

如果您运行此代码,则会多次引发异常,并且递归不会停止。我在这里的另一篇文章中阅读了使用异常来停止其轨道中的递归的这种方法,但使用情况有点不同。

我是否错误地实施了这一点?

【问题讨论】:

    标签: python recursion exception


    【解决方案1】:

    我想我想要“停止”的不是“while”而是递归的最初调用,它开始了所有的麻烦。所以我意识到这是解决方案:

    def recurse(c):
    
        while c>0:
          print(c)
          c-=1
          if c==5:
            raise StopIteration
    
          recurse(c-1)
                      
     
    
    try:
     recurse(12)
    except StopIteration:
      print("Stop the recursion I want to get off.")
    

    我很高兴它现在可以正常工作,只需写下这个问题就可以帮助我解决自己的问题。虽然,我怀疑它不是最优雅的孤子。例如,我选择那个错误代码是因为它“听起来不错”——它在这里被正确使用了吗?

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多