Jui*_*icy 2 python recursion permutation
我正在尝试在列表中生成所有排列.我知道有内置函数,但我想用递归函数自己做.我试图理解为什么我的尝试不起作用:
chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
def recurse(n, value):
if n > 0:
for c in chars:
value += c
recurse(n-1, value)
else:
print value
return
nchars = 2
recurse(nchars, '')
Run Code Online (Sandbox Code Playgroud)
在我看来,我的递归应该在两次迭代后停止(nchars = 2)但它会继续下去.我会发布当前的输出,但这是漫长而凌乱的方式.预期产出将是:
00
01
02
03
...
zx
zy
zz
Run Code Online (Sandbox Code Playgroud)
for c in chars:
value += c
recurse(n-1, value)
Run Code Online (Sandbox Code Playgroud)
此循环每个递归级别运行62次,因此value将增长并增长到最大大小为124.要避免此累积效应,请尝试:
for c in chars:
recurse(n-1, value+c)
Run Code Online (Sandbox Code Playgroud)