C++ 递归布尔回文(字符串 s)

C++ Recursive Boolean Palindrome(string s)

对于计算机科学class,我们正在研究递归函数,我个人不喜欢它,但我们需要使用它。下面的代码是为了检查输入的字符串's'是否为回文

bool palindrome(string s)
{
int len = s.length();
char start = s.at(0);
char last = s.at(0);

if(len>1)
{
    last = s.at(len);
}

if(start == last && len<=2)
{
    return true;
}
else if(start != last)
{
    return false;
}
else
{
    s = s.substr(1, s.size() - 2);
    return palindrome(s);
}
}

在 运行 之后,输入一个字符串,我得到一个运行时错误 'std::out_of_range',我不确定我在哪里搞砸了。一般来说,我对递归函数和 C++ 很陌生,所以任何帮助都会很棒。

如果需要任何我没有提供的额外信息,请告诉我。

*注意:我们需要使用bool函数,并且只能调用我们输入到函数中的字符串。

如果字符串的长度为 len,则其中字符的位置将为 0..len-1,这就是 last = s.at(len) 导致您收到错误的原因。

last = s.at(len);

应该是

last = s.at(len-1);