我有一个代码,它使用递归来计算字符串字符的排列。我很容易理解正常的尾部递归和回文,阶乘,十进制到二进制的转换的递归,但是我在理解这个递归是如何工作的,我是说它在后台是如何工作的,而不仅仅是我从更高层次得到的抽象的东西。在
这是密码
from __future__ import print_function
def permutef(s):
#print('\nIM CALLED\n')
out = []
if len(s) == 1:
out = [s]
else:
for i,let in enumerate(s):
#print('LETTER IS {} index is {}'.format(let, i))
#Slicing as not including that letter but includes every letter except that to perform the permutation
for perm in permutef( s[:i] + s[i+1:] ):
print(perm)
out += [let + perm]
return out
per = permutef('abc')
print('\n\n\n', per, '\n\n\n')
我在写一篇论文,每一个圆圈代表每一个字母,以及对应的堆栈是如何弹出的
别问我的笔迹,我知道它太棒了(讽刺)
这是输出屏幕截图
我想了解这个背景下是如何工作的,但我似乎无法理解这个概念,非常感谢。在
原理相当简单。一个单字符字符串(第3行)只有一个排列,由包含该字符的列表(第4行)表示。较长字符串的排列是通过获取字符串中的每个字符并排列其余字符来生成的—这是一种相当经典的递归分而治之方法。在
{alise}这类问题对你的站点执行很有用。我提供的链接已经预装了上面的代码,你可以在代码中前后移动,直到你理解了它是如何工作的。在
相关问题 更多 >
编程相关推荐