#include<iostream>
#include<string>
using namespace std;
void subseq(string s, string ans)
{
if (s.size() == 0)
{
cout <<ans<< endl;
}
char ch = s[0];
int code = ch;
string ros = s.substr(1);
subseq(ros, ans);
subseq(ros, ans+ch);
subseq(ros, ans + std::to_string(code));
}
int main()
{
cout<<subseq("AB", " ");
return 0;
}
错误,如IDE中所述,是:所有通过此函数的路径将调用自己二进制表达式的无效操作数('std::__1::ostream'(也称为'basic_ostream')和'void')
两个问题
- 无穷递归,"所有通过此函数的路径将调用自己";这里是提示
- 尝试输出
void
值
可以通过使用合适的return
s和subseq
的有意义的返回类型来处理。
对于这个问题,你要思考如何摆脱这个坏的递归。在函数的哪一点你不希望其余的被执行?
在什么时候你知道你想要输出的结果。它有什么数据类型,你需要将该类型声明为返回值。