程序返回0但在递归时仅返回“一个向上”,但我希望它转到“非常顶级”?这可能吗?

问题描述 投票:0回答:1

我是新手使用递归,我正试图让我的回文程序工作。这就是我想要做的:如果一个字符不相等,我返回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;

}
recursion palindrome
1个回答
0
投票

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

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.