我在查找代码中的错误时遇到了麻烦.我知道有一个,除了我不确定它是什么.我是编码的新手,这只是我的第二个学期,我的教授让我们跳到本书末尾学习递归,但是在实验室中,本书指出作者希望我们实施其他技能,这些技巧将在我们避开的章节中学到还没去过.换句话说,我正在使用我尚未学到的东西,所以我没有在这里看到错误.任何能够弄清楚我做错了什么的人,并解释一下我的帮助将不胜感激!谢谢!
if (palTest(s.toLowerCase().replaceAll("\\W","")))
System.out.println("\nYour phrase is a palindrome!");
public static boolean palTest(String str)
{
char first = str.charAt(0);
char last = str.charAt(str.length() - 1);
System.out.println(str);
System.out.println(first + " --- " + last);
System.out.println("----------------\n");
if (str.length() <= 2)
return true;
else if (first != last)
return false;
else
return palTest(str.substring(1, str.length()-1));
}
Run Code Online (Sandbox Code Playgroud)
if语句是我对palTest方法的调用.现在这段代码几乎适用于我输入的所有短语.但是,当我输入这句话时: "Dessertsm I强调"它会将字母m与我最后的字母进行比较并返回true,并说该短语是一个回文.
我放了一些System.out.println语句,所以我可以确切地看到发生了什么,这是它打印出来时的样子.
Please enter a phrase you wish to test to discover if it it a palindrome:
dessertsm i stressed …Run Code Online (Sandbox Code Playgroud) 我现在正在学习如何使用递归,并且我很难理解下面的代码是如何工作的:
public static String reverseString(String str)
{
if (str.length() == 0)
return str;
else
return reverseString(str.substring(1)) + str.charAt(0);
}
Run Code Online (Sandbox Code Playgroud)
我的程序的目标是编写一个递归方法,它接受一个String作为参数并返回该String的反向形式.我也知道这段代码可行.
我只是有点困惑,为什么它的工作原理.我希望有人了解递归并知道如何解释它!我理解子串是如何工作的以及该方法如何将第一个字母与单词分开(例如Mike ---> ike + M).
我不明白的是基本案例如何达到零以及该方法如何以相反的顺序返回字符串而不是无限地通过.
任何帮助将不胜感激!