#include<iostream>
#include<string>
using namespace std;
string reverse(string s){
static string a;
int t1=s.length(),t2=a.length();
if(t1==t2)
{s=a;
return s;}
else a+=s.at(t1-t2-1);
reverse(s);
}
int main() {
string str;
cin >> str;
cout << "原字符串为:" << str << endl;
cout << "倒序反转后为:" << reverse(str) << endl;
return 0;
}
为什么主函数第二个cout没有输出?是我的逻辑出现错误了吗。
修改如下:
只要在 reverse(s) 改为 return reverse(s); 就好了
#include<iostream>
#include<string>
using namespace std;
string reverse(string s){
static string a;
int t1=s.length(),t2=a.length();
if(t1==t2)
{s=a;
return s;}
else a+=s.at(t1-t2-1);
return reverse(s);
}
int main() {
string str;
cin >> str;
cout << "原字符串为:" << str << endl;
cout << "倒序反转后为:" << reverse(str) << endl;
return 0;
}
应该是void类型的返回值才能实现吧
#include<iostream>
#include<string>
using namespace std;
void reverse(string &s)
{
static string a;
int t1=s.length(),t2=a.length();
if(t1==t2)
{
s=a;
return;
}
else
a+=s.at(t1-t2-1);
reverse(s);
}
int main()
{
string str;
cin >> str;
cout << "原字符串为:" << str << endl;
reverse(str);
cout << "倒序反转后为:" << str << endl;
return 0;
}
string Resvers(string str) {
int len = str.size();
if (len == 1)
return str;
if (len == 2) {
swap(str[0], str[1]);
return str;
}
auto cs = str[0];
auto ce = str[len - 1];
return ce + Resvers(str.substr(1, len - 2))+cs;
}
int main()
{
string str;
cin >> str;
cout << Resvers(str);
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!