递归生成字母组合字符串

时间:2014-02-26 08:54:29

标签: c recursion

我正在尝试编写一个递归程序,使用元音(A,E,I,O,U)的所有可能组合(每个元音至少包含一次)来创建/打印一个字符串。元素的数量被视为来自用户的输入(因此包括每个元音至少一次> = 5)。我真的无法找到正确的方法来做到这一点。

这是我对它的看法(不工作):

#include <stdio.h>
#include <stdlib.h>

int voc_gen(int n, char *array);
char rand_voc();

int main()
{
char *array, voc[] = "AEIOU";
int i, N;
printf("Insert number of elements for vocals string:\n");
scanf("%d", &N);

array = malloc(N * sizeof(char));

for(i=0; i<5; i++)
    array[i] = voc[i];

voc_gen(N-5, array);

return 0;
}

int voc_gen(int n, char *array){
if(n==0)
    return 0;
else{
    array[voc_gen(n, array)] = rand_voc();
    printf("%s\n", array);
    return voc_gen(n-1, array);
}
}

char rand_voc(){
char array[] = "AEIOU";
int i;

return array[rand()%5];
}

0 个答案:

没有答案