c语言 高手来帮我做这道题。。。。

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:26:29
设有字母a、b、c,请编程用递归的方法产生由这些字母组成的,且长度为n的所有可能的字符串。例如,输入n=2,则输出:
aa ab ac ba bb bc ca cb cc

#include "stdio.h" //头文件引入
#include "stdlib.h"

char *p;
int num;

void f(int n)
{
if(n==1)
{
p[num-1]='a';puts(p);
p[num-1]='b';puts(p);
p[num-1]='c';puts(p);
}
else
{
p[num-n]='a';f(n-1);
p[num-n]='b';f(n-1);
p[num-n]='c';f(n-1);
}
}

void main()
{
scanf("%d",&num);
p=(char *)malloc((num+1)*sizeof(char));
p[num]='\0';
f(num);
}

貌似要用N重FOR循环