我正在研究一些介绍性的递归问题,我有一个澄清的问题,我想得到答案.我遇到的最棘手的问题是这个递归是如何在下面解决的问题中运行的?
尽管已经解决了这个问题,但我只是不理解递归调用如何进入字符串的内部.从查看代码看,这个方法似乎只检查给定字符串两端的两个字符,而不检查其余字符.我的教科书给出了非常不满意的答案,基本上,只要你的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"));
}
}
Run Code Online (Sandbox Code Playgroud) 作为练习,下面的代码块打算递归地遍历一个字符串并删除所有的"x"字符.它这样做,但我想跟踪newStr而不将其作为方法中的参数传递.无论如何将它移动到方法体中?
谢谢!
public static String deathToX(String str, String newStr) {
//look for x char
if(str.substring(0, 1).equals("x")) {
//do nothing
} else {
//add non-x char to newStr
newStr += str.charAt(0);
}
if(str.length() == 1) {
return newStr;
}
return deathToX(str.substring(1), newStr);
}
public static void main(String[] args) {
System.out.println("Return: " + deathToX("xnoxmore", ""));
}
Run Code Online (Sandbox Code Playgroud)