gpt4 book ai didi

c++ - 递归:将字符串中的 e 换成 a

转载 作者:太空狗 更新时间:2023-10-29 21:36:40 29 4
gpt4 key购买 nike

我的问题是我需要对字符串进行递归并将任何 e 更改为 a。每次我输入一个单词时,它只会打印出最后一个字母。

到目前为止我的代码:

string ReplaceEsWithAs(string s)
{
if (s.length() == 1)
{
if (s == "e")
{
s = "a";

return s;
}

else
{
return s;
}
}

else
{
return ReplaceEsWithAs(s.substr(1));
}
}

最佳答案

函数中唯一的return语句在条件下

if (s.length() == 1)

函数 return 总是返回一个包含一个字符的字符串,这是有道理的。

在递归部分,你使用:

return ReplaceEsWithAs(s.substr(1));

用字符串的第一个字符以外的所有字符调用函数。

如果你从 main 调用“abcd”,你在递归调用中用“bcd”调用,然后你用“cd”调用,然后你用“d”调用,它返回“d",一路返回。

您只是在每次递归调用中丢弃第一个字符。

你需要使用:

string ReplaceEsWithAs(string s)
{
if (s.length() == 1)
{
if (s == "e")
{
return "a";
}

// No need for an else
return s;
}

// No need for an else.
return ReplaceEsWithAs(s.substr(0,1)) + ReplaceEsWithAs(s.substr(1));
}

关于c++ - 递归:将字符串中的 e 换成 a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630007/

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