通过创建唯一组合进行递归

时间:2016-06-19 14:00:22

标签: python recursion

我正在尝试编写将从给定数字添加到列表中的唯一组合的函数。 例如,当input = 3时,我期望列表包含123,132,213,231 ......等元素

resultss = []

def fun(number, result=''):
    if len(result) == number:
        return resultss.append(result)
    else:
        for x in range(1, number + 1):
           if str(x) not in result:
               result += str(x)
               return fun(number, result)

fun(4)
print(resultss)

问题是,此功能仅添加第一个组合1234(例如4)。 任何解决方案?

1 个答案:

答案 0 :(得分:0)

如前所述,如果这不仅仅是一个递归练习,你可以使用itertools来实现:

from itertools import permutations


def fun(number):
    return [''.join(p)
            for p in permutations([str(n) for n in range(1, number)])]