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

时间:2017-03-28 01:09:58

标签: c++ function recursion boolean palindrome

对于计算机科学课,我们正在进入递归函数,我个人不喜欢,但我们需要使用它。以下代码旨在检查字符串是否输入' 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);
}
}

运行此命令并输入字符串后,我收到运行时错误&#39; std :: out_of_range&#39;,我不知道我搞砸了哪里。我对递归函数和c ++很新,所以任何帮助都会很棒。

如果我需要提供任何其他信息,请告诉我。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

last = s.at(len);

应该是

last = s.at(len-1);