簡體   English   中英

布爾值不會在回文函數(C ++)中調整為false

[英]Bool value not retuning false in palindrome function, C++

可悲的是,我已經閱讀了與該主題相關的每篇文章,似乎無法解決我的問題。 它使我發瘋。

出於某種原因,在我的第二次或第三次迭代中,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;
}

您應該使用了遞歸調用的返回值:

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

從中提取輸入字符串的第一個和最后一個字符之前 ,您應該檢查輸入字符串的長度。

如果您解決了兩個錯誤,那么應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM