еще одно рекурсивное решение (вы должны иметь возможность портировать это, чтобы использовать буквы вместо цифр), используя стек, немного короче, чем большинство, хотя:
stack = []
def choose(n,x):
r(0,0,n+1,x)
def r(p, c, n,x):
if x-c == 0:
print stack
return
for i in range(p, n-(x-1)+c):
stack.append(i)
r(i+1,c+1,n,x)
stack.pop()
4 выберите 3 или я хочу, чтобы все 3 комбинации чисел начинались с 0 до 4
choose(4,3)
[0, 1, 2]
[0, 1, 3]
[0, 1, 4]
[0, 2, 3]
[0, 2, 4]
[0, 3, 4]
[1, 2, 3]
[1, 2, 4]
[1, 3, 4]
[2, 3, 4]