Java Palindromes修订版

时间:2016-06-02 07:37:08

标签: java

嘿我刚刚修改我即将进行的java考试,特别是我遇到了一个问题,我们被告知了答案,但是我看不出它们是如何实现的,因此知道答案是无用的。

enter image description here

enter image description here

任何有关这方面的帮助都会受到赞赏,因为我在这个问题上遇到了很多麻烦。

通过将数字作为1,2,3运行是否可行,因为如果我从等式中跳过3,我可以使用此方法得到问题1的答案,但这也没有多大意义。

2 个答案:

答案 0 :(得分:0)

在递归的情况下,你必须小心堆栈。检查这样的问题时创建一个堆栈。事实证明这很简单。

考虑第一种情况N = 3

堆栈的顶部 - 回文(3)

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

答案 1 :(得分:0)

让我们看一下例A:

N=3所以第一次回避回文是i=3 此调用的返回值为palindrome(3 - 2) + palindrome (3 - 1) + palindrome (3 - 2)

这是palindrome(1) + palindrome(2) + palindrome(1)这相当于T + palindrome(2) + T 现在我们来看看palindrome(2)的调用。这是palindrome(2 - 2) + palindrome(2 - 1) + palindrome(2 - 2)等于palindrome(0) + palindrome(1) + palindrome(0)。那就是S + T + S

总而言之,回报为TSTST