我正在尝试编写一个递归程序,使用元音(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];
}