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

C++ Recursive Boolean Palindrome(string s)

本文关键字:字符串 回文 递归 布尔 C++      更新时间:2023-10-16

对于计算机科学课,我们正在进入递归函数,我个人不喜欢,但我们需要使用它。以下代码旨在检查字符串输入"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 函数,并且只能调用我们输入到函数中的字符串。

last = s.at(len);

应该是

last = s.at(len-1);

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