程序 returns 0 但只递归到 "one up",但我希望它转到 "very top"?这可能吗?

Program returns 0 but only to "one up" in recursion, but I want it to go to the "very top"? Is this possible?

我刚开始使用递归,我正在尝试让我的回文程序运行。这就是我想要做的:如果一个字符不相等,我 return 0。如果不相等,我在增加 i 和减少 j 的同时继续递归。如果i不再小于j,我想说递归完成了,所以我想return这个词是回文(=1)。

但是当我输入一个不是回文的单词时,我正确地return一个0。(我在调试时可以看到这个)。但是——最后,它也 return 是 1。我认为这与递归意味着程序继续运行这一事实有关,而 0 得到 returned 到我的东西以前一直在做。但是-我希望 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;

}

一旦你知道你的指针没有冲突,并且它们指向的字符相同,那么 this 方法的 return 值就是 return 递归调用的值。我已经在下面修复了您的代码以执行此操作,但我也以不同的方式重新组织了它,因为还有其他方法可以解决该问题:

public static int checkIfPalindrome(String s, int i, int j) {

    if (i >= j) {
        return 1;
    }

    if (s.charAt(i) != s.charAt(j)) {
        return 0;
    }

    return checkIfPalindrome(s, i + 1, j - 1);
}