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);
对于计算机科学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);