此求abc所有子集的C++程序为何会连续输出两次?求解?该如何处理
此求abc所有子集的C++程序为何会连续输出两次?求解?
#include<iostream>
#include<string>
using namespace std;
string c[4] = {"","a","b","c"};
int n = 3;
void getSet(int i,string s)
{
if(i > n)
cout<<s<<endl;
else
{
getSet(i+1,s+c[i]);
getSet(i+1,s);
}
}
void main()
{
getSet(0,"");
}
------解决方案--------------------
你的c[0]是"",那么getSet(0,"")运行后会调用
#include<iostream>
#include<string>
using namespace std;
string c[4] = {"","a","b","c"};
int n = 3;
void getSet(int i,string s)
{
if(i > n)
cout<<s<<endl;
else
{
getSet(i+1,s+c[i]);
getSet(i+1,s);
}
}
void main()
{
getSet(0,"");
}
------解决方案--------------------
你的c[0]是"",那么getSet(0,"")运行后会调用
- C/C++ code
getSet(i+1,s+c[i]); getSet(i+1,s);
------解决方案--------------------
递归程序可以设置一个比较小的初值,然后单步调试一遍就可以掌握其规律了