有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java回文修订

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

enter image description here

enter image description here

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

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


共 (2) 个答案

  1. # 1 楼答案

    让我们来看一个例子:

    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

  2. # 2 楼答案

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

    考虑第一种情况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