#include<iostream> #include<cmath> #include<string> using namespace std; void Reverse(string & Str,int strat,int end,int len) { if(len==0||len==1) return; else { swap(Str[strat],Str[end]); Reverse(Str,strat++,end--,len-2) ; } } int main() { string Str; int a,b,i; while(cin>>a>>b) { i=0; cin>>Str; Reverse(Str,0,Str.length()-1,Str.length()); for(i;i<Str.length();i++) { cout<<Str[i]; } cout<<endl; } return 0; }修复这个函数
时间: 2023-12-10 21:39:23 浏览: 77
使用include <iostream>时一定要加using namespace std
下面是修复后的代码:
```
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
void Reverse(string &Str, int start, int end)
{
if (start >= end)
return;
swap(Str[start], Str[end]);
Reverse(Str, start+1, end-1);
}
int main()
{
string Str;
int a, b, i;
while(cin >> a >> b >> Str)
{
Reverse(Str, a, b);
cout << Str << endl;
}
return 0;
}
```
修复的内容包括:
1. 去掉了原有的 len 参数,直接使用 start 和 end 计算子串长度;
2. 修正了递归调用中传入参数的错误,应该使用 ++start 和 --end;
3. 增加了对空字符串和单字符字符串的处理;
4. 在 main 函数中读取输入时,同时读取了字符串和子串范围。
修复后的代码可以正确地翻转字符串子串。
阅读全文