Java 试着用递归来解决这个问题
我知道有多种方法可以确定一个单词是否是回文的,比如使用StringBuilder的reverse函数,甚至是Collections的reverse函数,但是为了学习递归,我用这种方法编写了它。我甚至让它反复工作 我在embedded else语句中添加了return true,但我真的不知道该怎么办,因为当我在调试模式下运行它时,它返回false,然后再次调用checkPalindrome,我不明白为什么,因为它应该返回并终止,不是吗?如果能解释一下我做错了什么,以及如何让它以这种方式工作,我将不胜感激Java 试着用递归来解决这个问题,java,recursion,Java,Recursion,我知道有多种方法可以确定一个单词是否是回文的,比如使用StringBuilder的reverse函数,甚至是Collections的reverse函数,但是为了学习递归,我用这种方法编写了它。我甚至让它反复工作 我在embedded else语句中添加了return true,但我真的不知道该怎么办,因为当我在调试模式下运行它时,它返回false,然后再次调用checkPalindrome,我不明白为什么,因为它应该返回并终止,不是吗?如果能解释一下我做错了什么,以及如何让它以这种方式工作,我将
public static boolean checkPalindrome(Deque deq) {
if(deq.pollFirst() != deq.pollLast()) {
return false;
} else {
if(deq.size() == 1 || deq.size() == 0) {
return true;
} else {
checkPalindrome(deq);
return true // TODO ?? figure out What to put here ??
}
}
}
这是因为当你打电话给自己的时候,你什么也不回。内部else语句应为:
else {
return checkPalindrome(deq);
}
下面的注释中有一个后续问题,导致我想解释递归方法是如何工作的,但本质上,它们都遵循以下伪代码:
public boolean someMethod(T[] someArrayOrList) {
// return true -OR-
// return false -OR-
// call yourself and return whatever that call returns
}
不管怎样,当你调用这个方法时,它会返回一些东西。。。它要么返回自身的某个东西,要么返回自身的其他调用将返回的任何东西。从某种意义上说,所有的回答都是“和”,但事实上,真正的回答只有一次。跪下尖叫不,我担心这可能是答案。。。为什么这么困惑?你有这个概念,在学习如何构建递归方法时,你的失败是很常见的。所以它按照你建议的方式工作,但是我非常困惑为什么它返回false,然后执行next语句或执行return true;,然后转到下一个声明,你能帮我澄清一下吗?或者它只是获取返回的先前值?如何知道结束?它是说第一个实例是真的,下一个是真的,最后一个是假的,所以它是说返回真的和真的和假的?哦,太好了,现在有意义了。谢谢你的解释。