我正在做一些递归练习。前一个是为字符串创建一个 reverse() 函数,该函数基本上删除第一个字符,然后组合解决方案。我设法做到了,这里是源代码(整个源代码) 当前的任务是通过添加一个反转字符串子字符串的辅助函数来修改这个函数(本书中的以下练习)。此刻我陷入了困境。我的理解是,当您需要传递额外的参数或其他东西时使用辅助函数,而这个函数不需要任何东西,所以我真的不知道如何解决这个问题。帮助表示赞赏。
#include <iostream>
#include <string>
using namespace std;
void reverse(string& text)
{
if (text.length() == 0)
{
return;
}
if (text.length() == 1)
{
return;
}
else
{
string firstLetter = text.substr(0,1);
text = text.substr(1, text.length()-1);
reverse(text);
text += firstLetter;
}
}
int main()
{
string a = "tyu";
reverse(a);
cout << a << endl;
return 0;
}
一个人建议使用参数等,这是我的尝试:
#include <iostream>
#include <string>
using namespace std;
//is actually doing the hard work
void reverse1(string& input, int a, int b)
{
// base case
if( a >= b)
{
return;
}
//swap the characters
char tmp;
tmp = input[a];
input[a] = input[b];
input[b] = tmp;
//create the boundries for the new substring
a++;
b--;
//call the function again
reverse1(input, a, b);
}
// sets the parameters and calls the helper function
void strreverse(string& input)
{
reverse1(input, 0, input.length()-1);
}
int main()
{
cout << "Please enter the string which you want to be reversed:";
string a;
cin >> a;
strreverse(a);
cout << a << endl;
return 0;
}