我想寫一個遞歸函數來確定一個字符串是否是迴文。以下是我迄今爲止:尋找一個遞歸函數的字符串迴文
int main()
{
string word = "madam";
if (palindrome(word) == true)
cout << "word is a palindrome!" << endl;
else
cout << "word is not a palindrome..." << endl;
return 0;
}
bool palindrome(string word)
{
int length = word.length();
string first = word.substr(0,1);
string last = word.substr((length - 1), 1);
if (first == last)
{
word = word.substr((0 + 1), (length - 2));
cout << word << " " << word.length() << endl; // DEBUGGING
if (word.length() <= 1) return true; // Problem line?
palindrome(word);
}
else
return false;
}
出於某種原因,當遞歸函數得到足夠深,word.length()小於或等於1,它不返回true。我似乎無法弄清楚爲什麼。是否與遞歸函數的工作方式有關,或者在我評論DEBUGGING之前如何重新調整行中單詞的長度?
我不像C++那麼有天賦,所以請原諒我的編程看起來很差。
'word.substr((0 + 1)'是不是總是1 – Maroun