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

RECURSION in PYTHON to make all possible PERMUTATIONS without repeat

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

规则 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

有人能告诉我为什么它不起作用吗?

非常感谢您的帮助!

更正后的代码:

Try it online!

def stringPermutations(n, string, prefix, permutation_list):
    if n == 0:
        permutation_list.append(prefix)
    else:
        for i in range(len(string)):
            rem = string[0:i] + string[i + 1:]
            stringPermutations(n - 1, rem, prefix + string[i], permutation_list)
    return permutation_list

def main():
    n = int(input("write size: "))
    b = str(input("Write String: "))
    permutation_list = [] * n
    print(stringPermutations(n, b, "", permutation_list))

if __name__ == '__main__':
    main()

输入:

2
+x#

输出:

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