我一直在阅读C For Everyone一书,其中一个练习说是写一个函数字符串reverse(string str),其中返回值是str的反向.
有人可以写一些基本代码并向我解释一下吗?从昨天开始我就一直盯着这个问题而无法理解.我得到的最远的是函数返回str的第一个字母(我仍然不知道它是怎么发生的)
这是我得到的(发布此问题后一小时):
string reverse(string str)
{
string word = "";
if (str.length() <= 1)
{
return str;
}
else
{
string str_copy = str;
int n = str_copy.length() - 1;
string last_letter = str_copy.substr(n, 1);
str_copy = str_copy.substr(0, n);
word += reverse(str_copy);
return str_copy;
}
return word;
}
如果我输入“狼”,它将返回Wol.有人帮帮我
如果我返回单词而不是返回str_copy,那么我得到一个w
如果我返回last_letter,那么我得到一个l
解决方法:
我将解释递归算法本身.以“输入”为例,它应该产生“tupni”.您可以通过递归方式反转字符串
>如果字符串为空或单个字符,请将其保持不变.
>否则,
>删除第一个字符.
>反转剩余的字符串.
>将上面的第一个字符添加到反转字符串中.
>返回新字符串.
标签:c,recursion,reverse
来源: https://codeday.me/bug/20190926/1818949.html