【发布时间】:2020-08-09 17:23:33
【问题描述】:
我想打印一个列表,其中包含订购两个字母的所有可能方式,例如“a”、“b”,其中每个字母必须分别包含 n、k 次。
例如,如果我们有字母'a', 'b' 和n=1, k=2,那么我们应该有一个这样的列表:
[
'abb',
'bab',
'bba',
]
我设法在字符串 'a'*n+'b'*k 上使用递归排列解决了这个问题,但这非常低效,当我们在 n/k 上达到 8-10 时,程序内存不足。
如何在python中使用递归(没有itertools)解决这个问题?
【问题讨论】:
-
你试过什么代码?
-
实际上,itertools 会比任何“纯 python”解决方案快得多。
-
@frozen 我使用的置换函数如here 所述,但使用其他博客中的其他(更快)算法不起作用
-
@OlvinRoght 但我仍然想用递归来做。
-
@bendaMan,这里没有使用递归的单一理由,你有吗?
标签: python recursion combinations