Bool值不能在回文函数C ++中重新调整为false

时间:2017-12-27 06:52:43

标签: c++ c++11

我很遗憾地阅读了与此主题相关的每篇文章,似乎无法解决我的问题。这让我很生气。

出于某种原因,在我的第二次或第三次迭代中,if(beg!= end)不会返回false。如果我输入“bool”而不是“blob”,它会正确返回false。

我打印并且结束以确保事情正常流动,但仍然找不到出错的地方。

谢谢!!!

#include <iostream>
#include <string>
using namespace std;

bool palindrome_check (string str)
{
    string return_str;
    int length = str.length()-1;
    string beg = str.substr(0, 1);
    string end = str.substr(length, 1);

    if (beg != end)
    {
      //  cout << beg << " " << end << endl;
        return false;
    }

    else if ((str.length() > 2) && (str.length() != 0))
    {
        string new_str = str.substr(1, length - 1);
      //  cout << new_str << endl;
        palindrome_check(new_str);
    }
        return true;
}
int main ()
{

    string input;
    cout << "Enter a string: ";
    cin >> input;

    bool is_palindrome = palindrome_check (input);

    cout << is_palindrome << endl;
}

1 个答案:

答案 0 :(得分:0)

您应该使用递归调用的返回值:

        string new_str = str.substr(1, length - 1);
        return palindrome_check(new_str);
    }
    return true;

你应该检查输入字符串的长度,然后从中提取第一个和最后一个字符。

如果你解决了两个错误,那么它应该没问题。