嘿我刚刚修改我即将进行的java考试,特别是我遇到了一个问题,我们被告知了答案,但是我看不出它们是如何实现的,因此知道答案是无用的。
任何有关这方面的帮助都会受到赞赏,因为我在这个问题上遇到了很多麻烦。
通过将数字作为1,2,3运行是否可行,因为如果我从等式中跳过3,我可以使用此方法得到问题1的答案,但这也没有多大意义。
答案 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