【发布时间】:2020-02-03 05:06:45
【问题描述】:
该函数应该反转字符串,如果前后相同,则返回true。我必须为此使用递归,并且不能为此使用reverse()。我通过调试器运行我的代码,似乎我的代码在检查 s == reverse 时返回 false。
这是我的尝试:
bool Palindrome(const string& s, int i){
string reverse;
if(i < s.size()){
reverse[i] = s[s.size()-(i+1)]; // first character in reverse is the last character in s
Palindrome(s, i + 1);
}
if(s == reverse){
return true;
}
else{
return false;
}
}
【问题讨论】:
-
你输入的字符串是什么?如果您通过调试器运行代码,为什么不单步执行所有操作,看看发生了什么?
-
我已经很久没有玩过C++了,但我注意到的第一件事是字符串没有初始化,所以你得到了一些可能足够大也可能不够大的默认大小。其次,您不复制空字符,因此字符串可能无法正确终止,因此比较将是错误的。
标签: c++ function recursion reverse palindrome