我正在研究一些介绍性的递归问题,并且我有一个想要回答的澄清问题。我遇到的最烦人的问题是,这个递归在下面解决的问题中是如何运作的?
尽管已经解决了这个问题,但我只是不明白递归调用是如何进入字符串内部的。仅从代码来看,该方法似乎只会检查给定字符串两端的两个字符,而不会检查其余字符。我的教科书给出了一个非常不令人满意的答案,基本上,只要你的 return 语句改进了问题,就不用担心递归是如何工作的。但是我很难知道如何处理后续的递归问题,而不了解如何以与跟踪循环相同的方式跟踪递归方法。
任何智慧之言将不胜感激。
谢谢!
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"));
}
}