PYTHON中的递归,使所有可能的排列都不重复

PYTHON中的递归,使所有可能的排列都不重复,python,recursion,input,substring,permutation,Python,Recursion,Input,Substring,Permutation,我使用递归编写了一段代码,它遵循以下规则: 规则 2输入: 第一个输入:将输出的长度定义为整数 第二个输入:将用户想要的所有元素作为字符串写入 成为输出的一部分 使用这两个输入,程序必须执行以下操作: 第一。查找输入中输入长度的所有可能的子字符串, []*第一次输入 第二。使用输入的元素形成所有可能的组合 第二个输入 三,。打印所有可能的长度组合[]*第一次输入,使用 第二个输入的元素,不重复 代码 我的代码如下,无法给出输出的长度: def stringPermutations(

我使用递归编写了一段代码,它遵循以下规则:

规则 2输入:

  • 第一个输入:将输出的长度定义为整数
  • 第二个输入:将用户想要的所有元素作为字符串写入 成为输出的一部分
使用这两个输入,程序必须执行以下操作:

  • 第一。查找输入中输入长度的所有可能的子字符串, []*第一次输入

  • 第二。使用输入的元素形成所有可能的组合 第二个输入

  • 三,。打印所有可能的长度组合[]*第一次输入,使用 第二个输入的元素,不重复

代码 我的代码如下,无法给出输出的长度:

def stringPermutations(string, prefix, permutation_list):
    if len(string) == 0:
        permutation_list.append(prefix)
    else:
        for i in range(len(string)):
            rem = string[0:i] + string[i + 1:]
            stringPermutations(rem, prefix + string[i], permutation_list)
    return sorted(list(dict.fromkeys(permutation_list)))
def main():
    n = int(input("write size: "))
    b = str(input("Write String: "))
    permutation_list = [] * n
    print(stringPermutations(b, " ", permutation_list))

if __name__ == '__main__':
    main()
应如何工作的示例:

输入:

2
+x#
输出:

['+x', '+#', 'x+', 'x#', '#+', '#x']
有人能告诉我为什么它不起作用吗

非常感谢你的帮助

更正代码:

输入:

2
+x#
输出:

['+x', '+#', 'x+', 'x#', '#+', '#x']
['+x', '+#', 'x+', 'x#', '#+', '#x']