RecursionError:与Python相比,超出了最大递归深度

use*_*936 2 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, '')
Run Code Online (Sandbox Code Playgroud)

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

ggo*_*len 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, '')
Run Code Online (Sandbox Code Playgroud)

输出:

11
21
12
22
Run Code Online (Sandbox Code Playgroud)

试试吧!

  • 只是为了搭载OP,最大递归深度几乎总是无限循环的标志.导致无限循环的常见错误是不正确的基本情况,正如我们在此处所见 (2认同)