【问题标题】:C++ reverse string recursion [closed]C ++反向字符串递归[关闭]
【发布时间】:2014-02-22 04:16:48
【问题描述】:

我正在尝试递归地反转一个字符串。如果str1 == "hello",我希望str1 变成"olleh"。 在我的递归函数中,我试图将第一个字符复制到一个临时变量中,递归地传递字符串并将临时变量的内容附加到返回字符串的末尾。到目前为止,这是我的代码,

# include <iostream>
# include <string.h>
using namespace std;

string string_reverse(string) ;

int main ()
{
    string str1 = "hello";

    cout << string_reverse(str1) << endl;

    return 0;
}

string string_reverse(string str1)
{
    if (str1.length() == 1)
    { return str1;}
    else
        string temp;
        temp.assign(str1, 0, 1);
        str1.erase(0, 1);
        string_reverse(str1);
        return str1.append(temp);
}

但是,我收到一条错误消息,提示 temp 未在范围内声明。

【问题讨论】:

  • 如果您使用自动缩进代码的编辑器,您可能会立即发现问题。

标签: c++ string recursion


【解决方案1】:

您缺少{}——没有它们,您的else 子句就是string temp; 的那一行。

使用自动重排代码的编辑器可以帮助您查看此类内容。

【讨论】:

    【解决方案2】:

    else 子句周围需要花括号。

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 2014-11-16
      • 1970-01-01
      • 2014-07-10
      • 2020-08-09
      • 1970-01-01
      • 2019-08-09
      • 2015-09-27
      • 1970-01-01
      相关资源
      最近更新 更多