Trouver une Chaîne Palindrome avec une fonction récursive

Je suis en train d'écrire une fonction récursive qui permettra de déterminer si une chaîne est un palindrome. Voici ce que j'ai à ce jour:

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

Pour une raison quelconque, quand la fonction récursive obtient assez profond, et word.longueur() est inférieur ou égal à 1, Il ne renvoie pas true. Je n'arrive pas à comprendre pourquoi. Est-il quelque chose à voir avec la façon récursive les fonctions de travail, ou comment je suis réajuster la longueur de mot dans la ligne avant j'ai commenté le DÉBOGAGE?

Je ne suis pas aussi douée en C++ que je devrais être, donc veuillez m'excuser si ma programmation semble pauvres.

  • word.substr((0 + 1) N'est pas toujours le 1?
InformationsquelleAutor Blue | 2014-04-06