【发布时间】:2019-03-15 01:27:46
【问题描述】:
我是使用递归的新手,我正在尝试让我的回文程序正常工作。这就是我想要做的:如果一个字符不相等,我返回 0。如果不是,我在增加 i 并减少 j 的同时继续递归。如果 i 不再小于 j,我想说递归完成,所以我想返回这个词是回文(=1)。
但是当我输入一个不是回文的单词时,我正确地返回了一个 0。(我在调试时可以看到这个)。但是 - 最后,它也返回一个 1。我认为这与递归意味着程序继续运行的事实有关,并且 0 被返回到我以前做过的事情。但是-我希望 0 到最顶端。
有没有办法解决这个问题?还是我做错了什么?对不起,如果这真的很基本。 提前致谢。这是我的代码:
public static int checkIfPalindrome(String s, int i, int j) {
if (i<j) {
if (s.charAt(i) == s.charAt(j)) {
checkIfPalindrome(s, i+1, j-1);
}
else {
return 0;
}
}
return 1;
}
【问题讨论】:
-
您缺少递归调用的 return 语句,因此您有效地丢弃了更深层次的递归结果并默认返回 1。
-
嗯,有道理,非常感谢!
标签: recursion palindrome