编写一个程序,提示用户输入字符串,并使用递归函数向后打印字符串。不要使用任何全局变量;使用适当的参数。你能给我一些提示吗,比如伪代码?
int stringbackwards(string a){
if()
else
}
int main(){
string name;
cout<<"Write a name: ";
cin>>name;
cout<<"Backwards "<<stringbackwards(name);
return 0;
}
答案 0 :(得分:4)
为什么要使用递归呢? 在c ++中有一个很好的概念叫做迭代器,已经有了这个功能实现:)
http://www.cplusplus.com/reference/string/string/rbegin/
所以在你的情况下:
cout<<"Backwards ";
for (std::string::reverse_iterator rit=name.rbegin(); rit!=name.rend(); ++rit)
{
cout << *rit;
}
但为了使它递归,我会这样做(Pseudocode)。
function backwards(std::string& name, unsigned int length)
{
unsigned int length = name.length();
unsigned int currLength = length - 1;
if (length > 0)
{
backwards(name, currLength);
}
std::cout << name[length - currLength - 1];
}
答案 1 :(得分:0)
提示:
说字符串是“abcd”。你想打印“dcba”。换句话说,您首先打印最后一个字母。
因此,您将首先深入了解递归,然后在回来后打印字母'a'。