【发布时间】:2015-09-09 10:13:36
【问题描述】:
我正在尝试跟踪检测单词是否为回文的递归方法:
public static boolean isPalindrome(String word) {
if (word.length() == 0 || word.length() == 1) {
return true;
} else if (word.charAt(0) == word.charAt(word.length() - 1)) {
return isPalindrome(word.substring(1, word.length() - 1));
} else {
return false;
}
}
我用过的词是:“abba”。该方法的第一个实例采用 else 方式,因为第一个 if 条件的求值,所以它求值 if else 语句中的条件,得到一个 true 作为结果,然后该方法返回带有单词“bb”的方法的运行.递归再次运行该方法:“bb”的长度不是0或1,则采用else方式,并评估第一个'b'是否等于第二个'b',为真,因此返回运行再次使用相同的方法,但现在有一个子字符串,该子字符串从位置 1 (beginIndex) 'b' 的字符开始,到位置 0 (endIndex) 的字符结束,但 beginIndex 大于 endIndex,这应该引发 IndexOutOfBoundsException 。 ..但是该方法有效。有人可以向我解释一下吗?谢谢
【问题讨论】:
-
我已对您的代码进行了格式设置以提高可读性,但将来我强烈建议您自己执行此操作。格式化非常重要,因为如果您的代码不是标准可接受的格式,那么它的可读性就不是很好,如果它不可读,那么就无法理解。
标签: java recursion palindrome