打印所有可能的二进制排列的递归函数

Recursion Function that prints all possible binary permutations

我正在尝试编写一个递归函数,该函数使用字符串应具有的 'A' 和 'B' 元素数量的给定输入生成所有二进制排列。例如 function(a, b) 当 a = 2 和 b = 2 时应该生成:
AABB
ABAB
阿巴
巴布
巴巴
BBAA
感谢您的帮助。谢谢!

基本情况是 ab 为零的情况,因为如果只有一个元素,则只有一个排列。从那里开始,递归调用只需要从 ab 中减去一个,以确保它们最终都将达到零。

>>> def ab(a, b):
...     if not a:
...         return ["B" * b]
...     if not b:
...         return ["A" * a]
...     return ["A" + p for p in ab(a - 1, b)] + ["B" + p for p in ab(a, b - 1)]
...
>>> ab(2, 2)
['AABB', 'ABAB', 'ABBA', 'BAAB', 'BABA', 'BBAA']