[英]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.