【问题标题】:RecursionError: maximum recursion depth exceeded in comparison PythonRecursionError:比较Python中超出了最大递归深度
【发布时间】:2019-04-18 22:12:24
【问题描述】:

我正在尝试编写一个递归函数来在 python 中打印某种排列。 但是由于某种原因,我得到了最大深度错误。

def perm(chars, k, word):
   if k == 0:
      print(word)
   for char in chars:
      perm(chars, k - 1, char + word)


perm(['1','2'], 2, '')

有人知道错误是什么吗?

【问题讨论】:

    标签: python recursion


    【解决方案1】:

    您缺少base case,导致您的调用堆栈为overflow。通过使for 循环(递归情况)有条件来添加基本情况:

    def perm(chars, k, word):
       if k == 0:
           print(word)
       else:
           for char in chars:
               perm(chars, k - 1, char + word)
    
    
    perm(['1','2'], 2, '')
    

    输出:

    11
    21
    12
    22
    

    Try it!

    【讨论】:

    • 是的,显然我只是错过了其他 :)
    • 只是为了搭载-OP,最大递归深度几乎总是无限循环的迹象。导致无限循环的常见错误是不正确的基本情况,正如我们在此处看到的那样
    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 2019-03-23
    • 2018-05-09
    • 2020-07-13
    • 2022-08-23
    • 2022-01-22
    • 2020-03-14
    • 2018-06-07
    相关资源
    最近更新 更多