Suche nach einem String Palindrom mit einer rekursiven Funktion

Bin ich zu schreiben versucht, eine rekursive Funktion, die ermittelt, ob ein string ein Palindrom ist. Hier ist was ich habe, so weit:

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;
}

Aus irgendeinem Grund, wenn die rekursive Funktion geht tief genug und word.length() ist weniger als oder gleich 1 ist, ist Es nicht true zurückgibt. Ich kann nicht scheinen, um herauszufinden, warum. Ist es etwas zu tun, wie rekursive Funktionen arbeiten, oder wie ich bin Nachjustierung der Länge des Wortes in der Zeile, bevor ich kommentiert DEBUGGEN?

Ich bin nicht so talentiert in C++ wie ich es sein sollte, so bitte entschuldigen Sie mich, wenn meine Programmierung arm erscheint.

word.substr((0 + 1) Ist das nicht immer 1?

InformationsquelleAutor Blue | 2014-04-06

Schreibe einen Kommentar