【问题标题】:recursion with creating unique combinations递归创建独特的组合
【发布时间】:2016-06-19 14:00:22
【问题描述】:

我正在尝试编写将给定数字的唯一组合添加到列表的函数。 例如,当 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)

问题是,例如,这个函数只为 4 添加了第一个组合 1234。 有什么解决办法吗?

【问题讨论】:

  • 只要你returnfor 循环就结束了...
  • while循环的效果一样吗?
  • 当然。一旦你点击return,整个功能就结束了。
  • 除非这是一个学习练习,否则itertools 可以为您完成这项工作
  • 如果这是一个练习,那么只需将return 语句一起删除,resultss.append(..) 返回None,因此递归调用也将返回None,因此您的函数无论如何都不会返回任何内容。

标签: python recursion


【解决方案1】:

如前所述,如果这不仅仅是一个递归练习,您可以使用 itertools 来完成:

from itertools import permutations


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

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多