gpt4 book ai didi

c++ - 在 C++ 中使用递归函数反转字符串

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:40 25 4
gpt4 key购买 nike

为了探索我对递归的理解,我尝试使用递归函数来反转字符串。这看起来应该比现在对我来说更简单。谁能告诉我我做错了什么。当我执行下面的代码时,它会产生一个空行。我在这里四处寻找类似的主题,但每件事都是用其他语言写的……令我惊讶的是。

#include <iostream>
#include <string>

using namespace std;


/**
Recursivly reverses a string
@param return last_char, the last character currently in the string
@param go, the recursive function to return the character and continue within the function
**/
char string_reverse(string word)
{

if (word.length()-1 > 0)
{
char last_char = word[word.length()-1];
word.erase(word.length()-1);
char go = string_reverse(word);
return go;

}

else
return false;

}


int main()
{
cout << "Enter a string: ";
string input;
getline(cin, input);
string last;
last = last + string_reverse(input);
cout << last << endl;

/*char fig = string_reverse(input, fig);
cout << fig << endl;
*/

system("pause");
return 0;
}

最佳答案

string_reverse中,您应该返回最后一个字符 + string_reverse(word) + 第一个字符

在您的 else 中,返回一个空字符串,这样您就不会遇到输入错误。

调用该函数时,不要对word做任何其他操作,只需调用string_reverse(word)

综合起来:

#include <iostream>
#include <string>

using namespace std;


/**
Recursivly reverses a string
@param return last_char, the last character currently in the string
@param go, the recursive function to return the character and continue
within the function
**/
string string_reverse(string word)
{

if (word.length()-1 > 0)
{
string first_char = word.substr(0,1);
string last_char = word.substr(word.size()-1,1);
string middle = word.substr(1, word.size()-2);
return last_char + string_reverse(middle) + first_char;

}

else
return "";

}


int main()
{
cout << "Enter a string: ";
string input;
getline(cin, input);
cout << string_reverse(input); << endl;

system("pause");
return 0;
}

然而,对于奇数字母计数,这将失败。 “c”将输出“cc”。我会把它留给你。

关于c++ - 在 C++ 中使用递归函数反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15704660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com