C语言题,只有一题,请用递归完成!
设有字母a,b,c ,采用递归的方法产生由这些字母组成的,且长度不大于n的所有可能的字符串n为1时: a b c...2时: a b c aa bb cc ab bc ac
参考答案:#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//µÝ¹éº¯Êý
void v(int n,char *t)
{
if (n==1)
{
printf("%sa ",t);
printf("%sb ",t);
printf("%sc ",t);
}
else
{
int l=strlen(t);
char *str=(char *)malloc(sizeof(char)*(2+l));
strcpy(str,t);
str[l]='a';str[l+1]='\0';
v(n-1,str);
str[l]='b';str[l+1]='\0';
v(n-1,str);
str[l]='c';str[l+1]='\0';
v(n-1,str);
}
}
void main()
{
int n;
printf("n=");
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
v(i,"") ;
}
printf("\n");
}