我有无法应付的作业。 “编写一个递归函数,该函数从用户处检索字符,直到遇到星号为止,并以与输入字符相反的顺序返回用户输入的字符串(不带星号-*)。”
我试图编写一个获取字符的代码,直到出现星星为止,但是我不知道如何反向显示字符。
解决方案
string recursiveReverse()
{
cout << "Enter a new character" << endl;
char text;
cin >> text;
if(text == '*')
return std::string();
else
recursiveReverse();
cout << text;
}
答案 0 :(得分:4)
您向我们展示的内容有两个绊脚石:
char
而不是std::string
(根据要求)。如果您适应了这两点,则会得到以下函数签名 1 :
std::string magic();
现在,如何实现此功能?好吧,问题描述暗示了这一点:
'*'
,请立即返回(空字符串)1 这是直观,幼稚的解决方案。有一个更好的解决方案,需要更改签名。但这可能不是这里要问的,为什么为什么签名更好的原因并不容易解释。
答案 1 :(得分:0)
为什么不让函数返回类型为void,遇到*就返回。 并且您以递归方式调用该函数,而没有在递归调用之前返回 然后打印得到的字符,然后返回。