反转字符串的递归方法

dea*_*mer 0 c++ string

我正在尝试编写一个反转字符串的递归方法,如下所示.

void reverse(string s,int i,int l)
{
    static int j;
    while(i<l)
    {
        char ch=s[i];
        cout<<ch<<endl;
        reverse(s,i+1,l);
        cout<<"after="<<ch<<endl;
        s[j]=ch;
        j++;
    }
    cout<<s<<endl;
    s[j]=0;
}
Run Code Online (Sandbox Code Playgroud)

但我的输出不正确."after="<<ch始终打印字符串的最后一个字符.函数的参数是s是std :: string,i是从0开始的索引,l是字符串的长度.任何人都可以指出我做错事的地方.

P0W*_*P0W 5

你可能已经弄明白了这个问题.

另一种方法,如果你不喜欢/想要迭代器或反向函数.

 string revStr(string str){
        if (str.length() <= 1) {
            return str;
        }else{
            return revStr(str.substr(1,str.length()-1)) + str.at(0);
        }
    }
Run Code Online (Sandbox Code Playgroud)