Comment récursive isPalindrome fonction de travail?

Je travaille sur certains d'introduction les problèmes de la récursivité et j'ai une question de clarification, j'aimerais obtenir une réponse. La plus lancinante question que je me pose est de savoir comment est cette récursivité d'exploitation dans la solution du problème ci-dessous?

Malgré le fait d'avoir résolu le problème, je suis juste de ne pas comprendre comment la récursivité appel fait son chemin à l'intérieur de la chaîne. Il semblerait, de simplement en regardant le code, que cette méthode ne voulut jamais vérifier les deux personnages sur chaque extrémité de la chaîne, sans vérifier le reste. Mon manuel donne à l'profondément insatisfaisant réponse, en gros, ne vous inquiétez pas sur la façon de récursivité fonctionne tant que votre demande de retour affine le problème. Mais je vais avoir de la difficulté à savoir comment l'approche ultérieure problèmes de la récursivité, sans comprendre comment on peut trouver la trace d'une méthode récursive de la même manière on pourrait tracer une boucle.

Tous les mots de la sagesse serait très apprécié.

Merci!

public class isPalindrome {

public static boolean isPalindrome(String str)
{
    //test for end of recursion
    if(str.length() < 2) {return true;}

    //check first and last character for equality
    if(str.charAt(0) != str.charAt(str.length() - 1)){return false;}

    //recursion call 
    return isPalindrome(str.substring(1, str.length() - 1));
}
public static void main(String[] args)
{
    System.out.print(isPalindrome("deed"));
}
}

OriginalL'auteur gryb | 2012-02-02