Java回文修订

Java回文修订,java,Java,嘿,我正在为即将到来的java考试复习,我被一个特别的问题困在了一个套路中,我们被告知答案,但我看不出它们是如何实现的,因此知道答案毫无用处 如果能帮上忙,我将不胜感激,因为我在这个问题上遇到了很多麻烦 如果我从等式中跳过3,那么我可以用这个方法得到问题1的答案,如果我把数字作为1、2、3来运行,这是否有效?但是这也没有多大意义。在递归的情况下,你只需要小心处理堆栈。在检查此类问题时创建堆栈。结果很简单 考虑第一种情况N=3 堆栈顶部-回文(3) 让我们来看一个例子: N=3因此回文的第一个

嘿,我正在为即将到来的java考试复习,我被一个特别的问题困在了一个套路中,我们被告知答案,但我看不出它们是如何实现的,因此知道答案毫无用处

如果能帮上忙,我将不胜感激,因为我在这个问题上遇到了很多麻烦


如果我从等式中跳过3,那么我可以用这个方法得到问题1的答案,如果我把数字作为1、2、3来运行,这是否有效?但是这也没有多大意义。

在递归的情况下,你只需要小心处理堆栈。在检查此类问题时创建堆栈。结果很简单

考虑第一种情况N=3

堆栈顶部-回文(3)


让我们来看一个例子:

N=3
因此回文的第一个调用是使用
i=3
此调用的返回值是
palindrome(3-2)+palindrome(3-1)+palindrome(3-2)

这是
回文(1)+回文(2)+回文(1)
这等于
T+回文(2)+T
现在我们来看一下回文(2)的调用。这是
回文(2-2)+回文(2-1)+回文(2-2)
等于
回文(0)+回文(1)+回文(0)
。这就是
S+T+S


总之,回报是
TSTST

嘿,欢迎来到stackoverflow。如果您有问题,我们需要您当前的进度来帮助您。请发布您的代码。@glubus嘿,这个问题不是关于创建工作代码,而是关于理解已经工作的代码的工作方式,问题的代码在IMGURLINK中。这个问题是离题的,我们不在这里,您可以帮助您理解其他人创建的代码。也许,如果您非常清楚地指定了您不理解的内容,并展示了您试图理解正在发生的事情的努力,人们可能会说服您提供帮助。我建议您将该代码放入IDE中,如Eclipse/NetBeans/Intellij,然后逐步完成。如果你做不到,那就用笔和纸。递归可能有点难掌握,这绝对是掌握它的最好方法。@Kaiatten你用纸和笔得到了正确的输出,但你不确定你是否用正确的解释导出了输出。简单,用除1和2之外的更多输入写出输出。然后运行程序并将您的答案与实际输出进行比较。当实际输出与您的不同时,请将其张贴在此处,告诉我们您得到了什么。我相信你会得到答复的。如果您尝试输入1-10,并且所有输入都是正确的。虽然这是对这个问题的一个很好的回答,但格式却令人震惊。花些时间在格式化工具上,在专业论坛上得到一些看起来像专业答案的东西,你可能会得到一些投票。嘿,当使用三个堆栈时,为什么它是T+回文(2)+回文(1)而不是T+回文(2)+T?@Kaitattewell这不是一回事吗?堆栈的要点是它首先被计算到顶部-我们不知道
P(1)
在堆栈底部是什么,因为我们还没有得到它。虽然显然
P(1)==T
@boristesteiderya。。我是新来的。(有点)我在我的手机上贴了这个答案3 Thanxx Btw。。。我会从下次开始处理的。:)@好吧,最终会的。只是回文(2)将被推到最后一个回文(1)之前的堆栈中。回文(3)的回文(1)将计算两次(回文(2)将再次计算)。这是我们避免递归的主要原因,因为它会导致内存开销。因此,我运行原始数字3,找出其中哪些值匹配,然后对任何不返回S或T的值(例如回文2)运行回文。我想我从这个答案中理解了这一点。这就是它背后的思想。
As Value of i!=0 or 1 so  palindrome (3-2) is the first statement to be called. Hence, pushed at top of the stack.

Now top of the stack, palidrome(1)
i= 1, returns 1 and top popped..

Back to palindrome(3), equals T + PALIDROME(2)+PALINDROME(1)

PALIDROME(2) to top of the stack.
Now for n=2,
Return statement will be       palidrome(0)+palindrome(1)+palindrome(0)
=STS
Top popped, so back to palindrome(3)
Hence palindrome(3)= T+STS+T=TSTST