以集合{a,s,d,f}为例说明递归思想
第一步:去掉f的,和不去掉f的,得到两个集合{a,s,d,f},{a,s,d}
第二步:将得到的两个集合,去掉d的,和不去掉d的,得到4个集合
>>>>>>
依次做下去,等去掉第一个元素后,就得到了所有的子集。
程序实现如下:
#include<iostream.h>
#include<string.h>
void build(char str[],int n);
void main()
{
char string[5]="asdf";//实例集合放在数组中
build(string,4);
}
void build(char str[],int n)
{
if(n==0)//控制输出
{
cout<<str;
cout<<endl;
}
else
{
build(str,n-1);
char newstr[5]=' ';//去掉就把该位置的元素置成空
strcat(newstr,str);
newstr[n-1]=' ';
build(newstr,n-1);
}
}