一个递归函数,它检索字符并以相反的顺序返回c ++

时间:2019-03-27 16:01:08

标签: c++ recursion

我有无法应付的作业。 “编写一个递归函数,该函数从用户处检索字符,直到遇到星号为止,并以与输入字符相反的顺序返回用户输入的字符串(不带星号-*)。”

我试图编写一个获取字符的代码,直到出现星星为止,但是我不知道如何反向显示字符。

  

解决方案

string recursiveReverse()
{
    cout << "Enter a new character" << endl;
    char text;
    cin >> text;

    if(text == '*')
        return std::string();
    else
        recursiveReverse();
        cout << text;
}

2 个答案:

答案 0 :(得分:4)

您向我们展示的内容有两个绊脚石:

  1. 您的函数带有一个参数;为什么?问题描述中没有任何建议这样做。
  2. 您的函数返回char而不是std::string(根据要求)。

如果您适应了这两点,则会得到以下函数签名 1

std::string magic();

现在,如何实现此功能?好吧,问题描述暗示了这一点:

  • 读取单个字符
  • 如果字符为'*',请立即返回(空字符串)
  • 否则,递归调用该函数并将当前字符连接到其返回值。

1 这是直观,幼稚的解决方案。有一个更好的解决方案,需要更改签名。但这可能不是这里要问的,为什么为什么签名更好的原因并不容易解释。

答案 1 :(得分:0)

为什么不让函数返回类型为void,遇到*就返回。 并且您以递归方式调用该函数,而没有在递归调用之前返回 然后打印得到的字符,然后返回。