程序 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);
}
我刚开始使用递归,我正在尝试让我的回文程序运行。这就是我想要做的:如果一个字符不相等,我 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);
}