递归错误:在Python中超过了最大递归深度。

4
我正在尝试编写一个递归函数,用于在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个回答

6

你缺少一个 基本情况,导致调用栈 溢出。通过将 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

试一试!


是的,显然我只是漏了那个else :) - user4464936
2
只是为了附和一下,楼上的,最大递归深度几乎总是无限循环的明显标志。导致无限循环的常见错误是不正确的基本情况,正如我们在这里看到的。 - Hollywood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接