三时三餐2015朴信惠:C语言题,只有一题,请用递归完成!

来源:百度文库 编辑:高校问答 时间:2024/04/28 09:02:10
设有字母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");
}

char abc[3]=['a','b','c'];
int in=1;
//递归函数
int v(int n,char t)
{
int i;
for(i=0;i<3;i++)
{
printf("%c%c ",t,abc[i]); //这里可写成存入数组,再用递归排序
if(n>1) v(n-1,abc[i]);
}
}
void main()
{
scanf("n:%d",&in);
v(in,' ')
}

完成

楼上第一行右边要用大括号

都回答的很不错,看来我没有必要出手了.