Java 试着用递归来解决这个问题

Java 试着用递归来解决这个问题,java,recursion,Java,Recursion,我知道有多种方法可以确定一个单词是否是回文的,比如使用StringBuilder的reverse函数,甚至是Collections的reverse函数,但是为了学习递归,我用这种方法编写了它。我甚至让它反复工作 我在embedded else语句中添加了return true,但我真的不知道该怎么办,因为当我在调试模式下运行它时,它返回false,然后再次调用checkPalindrome,我不明白为什么,因为它应该返回并终止,不是吗?如果能解释一下我做错了什么,以及如何让它以这种方式工作,我将

我知道有多种方法可以确定一个单词是否是回文的,比如使用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;,然后转到下一个声明,你能帮我澄清一下吗?或者它只是获取返回的先前值?如何知道结束?它是说第一个实例是真的,下一个是真的,最后一个是假的,所以它是说返回真的和真的和假的?哦,太好了,现在有意义了。谢谢你的解释。