RecursionError:在比较Python中超出了最大递归深度

时间:2018-11-15 18:23:38

标签: python recursion

我正在尝试编写一个递归函数以在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, '')

任何人都知道错误是什么吗?

1 个答案:

答案 0 :(得分:6)

您错过了一个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!