代码之家  ›  专栏  ›  技术社区  ›  holydragon

Python按整数递归排列并返回一组元组

  •  0
  • holydragon  · 技术社区  · 4 年前

    首先也是最重要的是,我搜索了很多网站,花了很多时间找到了一种实现这个特定要求的方法。举几个例子, this this 来自SO和许多其他外部网站。

    这个要求很容易理解。

    我不能用 import 并且只能用递归来实现这个任务。这个函数本身必须能够解决这个问题。不允许使用帮助函数。

    我必须用这个定义写一个函数:

    def permutation(n: int) -> set[tuple[int]]:
    

    调用时的预期结果 permutation(3) 详情如下:

    {(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)}

    我感到非常沮丧,我无法在这里提供任何有用的尝试。我试图想出解决这个问题的办法,但没能想出任何有用的办法。因此,我没有示例代码。

    1 回复  |  直到 4 年前
        1
  •  2
  •   rchome    4 年前

    这个想法是,如果你能得到n-1的每个排列的列表,你可以插入 n 在这些排列结果的每个点之间。

    def permutation(n):
        if n == 0:
            # base case
            return {()}
        result = set()
        for x in permutation(n - 1):
            for i in range(n):
                # insert n in position i in the permutation of all of the lesser numbers
                result.add(x[:i] + (n,) + x[i:])
        return result