Как работает рекурсивная функция isPalindrome?

Я работаю над некоторыми вводными задачами по рекурсии, и у меня есть уточняющий вопрос, на который я хотел бы получить ответ. Самый наболевший вопрос, который у меня есть, - это как эта рекурсия работает в решенной ниже задаче?

Несмотря на решение задачи, я просто не понимаю, как вызов рекурсии попадает во внутреннюю часть строки. Если просто посмотреть на код, то кажется, что этот метод проверяет только два символа на обоих концах заданной строки, не проверяя остальные. Мой учебник дает глубоко неудовлетворительный ответ: в принципе, не беспокойтесь о том, как работает рекурсия, пока ваш оператор возврата уточняет проблему. Но мне трудно понять, как подходить к последующим проблемам с рекурсией, не понимая, как можно отследить рекурсивный метод так же, как цикл.

Любые слова мудрости были бы очень признательны.

Спасибо!

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"));
}
}
6
задан Nadir Muzaffar 2 February 2012 в 05:40
поделиться