【发布时间】:2017-01-30 11:57:24
【问题描述】:
我的问题是我需要对字符串进行递归并将任何 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));
}
}
【问题讨论】:
-
使用适当的缩进格式化代码总是有帮助的。
-
对不起,我对此完全陌生,我会修复它。
-
我认为通过循环(并可能修改)字符串中的每个字符而不是递归来更好地解决这个问题。
-
是的,我可以在没有递归的情况下做到这一点,但我想知道为什么它只打印出单词的最后一个字母。我不知道这是否是我的 if 语句,因为我尝试了不同的方法来修复它,但它仍然不起作用。
-
试着写出程序流程图。您拥有的每个
return语句都将返回一个单字符串;您可能的意思是将当前结果添加到递归调用的结果中,从而逐个字符地构建最终输出。