Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数,该函数从n个字符(可以是A、B或C)中生成所有单词_Python_Recursion - Fatal编程技术网

Python 函数,该函数从n个字符(可以是A、B或C)中生成所有单词

Python 函数,该函数从n个字符(可以是A、B或C)中生成所有单词,python,recursion,Python,Recursion,我们需要制作一个函数,使a、B和C的所有组合长度为n。我尝试了一些东西,我只让它在0、1和2中工作,但我不知道如何使用递归或嵌套循环 n=3示例: AAA、BAA、CAA、ABA、BBA、CBA、ACA、BCA、CCA、AAB、BAB、CAB、ABB、BBB、CBB、ACB、BCB、CCB、AAC、BAC、CAC、ABC、BBC、CBC、ACC、BCC、CCC 使用递归解决java中的问题: publicstaticvoidmain(字符串[]args){ String str=String.

我们需要制作一个函数,使aBC的所有组合长度为n。我尝试了一些东西,我只让它在0、1和2中工作,但我不知道如何使用递归或嵌套循环

n=3
示例:

AAA、BAA、CAA、ABA、BBA、CBA、ACA、BCA、CCA、AAB、BAB、CAB、ABB、BBB、CBB、ACB、BCB、CCB、AAC、BAC、CAC、ABC、BBC、CBC、ACC、BCC、CCC



使用递归解决java中的问题:

publicstaticvoidmain(字符串[]args){
String str=String.valueOf(字);
打印组合(str);
}
私有静态void打印组合(字符串str){
打印置换(str,“”);
}
私有静态void打印置换(字符串str、字符串str2){
如果(str2.length()==str.length()){
//打印组合
系统输出打印项次(str2);
返回;
}
对于(int i=0;i
问题在于递归逻辑,您需要以某种方式对其进行更改以正确显示递归逻辑,下面是一个示例:

    ...
    #produce results for n-1 length so we can use it later
    res=generator(n-1)
    for word1 in words:
            # for each partial result (length n-1) we can generate final result by concatenating current word to it
            for r1 in res:
                complete.append(word1+r1)
完整代码:

def generator (n):

    complete = [ ]

    words = ["A", "B", "C",]

    if (n==1):
        for word1 in words:
            complete.append(word1)
        return complete

    elif (n==0):
        return complete

    else:
        res=generator(n-1)
        for word1 in words:
                for r1 in res:
                    complete.append(word1+r1)

    return complete
n=3的结果:(27个字符串)


列表(itertools.product(“abc”,repeat=3))
?这是否回答了您的问题?
def generator (n):

    complete = [ ]

    words = ["A", "B", "C",]

    if (n==1):
        for word1 in words:
            complete.append(word1)
        return complete

    elif (n==0):
        return complete

    else:
        res=generator(n-1)
        for word1 in words:
                for r1 in res:
                    complete.append(word1+r1)

    return complete
['AAA', 'AAB', 'AAC', 'ABA', 'ABB', 'ABC', 'ACA', 'ACB', 'ACC', 'BAA', 'BAB', 'BAC', 'BBA', 'BBB', 'BBC', 'BCA', 'BCB', 'BCC', 'CAA', 'CAB', 'CAC', 'CBA', 'CBB', 'CBC', 'CCA', 'CCB', 'CCC']