Recursive Tracing Java: Learn How to Trace a Method

  • Context: Java 
  • Thread starter Thread starter Neon32
  • Start date Start date
  • Tags Tags
    Java tracing
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
12 replies · 2K views
Neon32
Messages
68
Reaction score
1
It would be much appreciated if you could show me how to do recursive tracing for this method.
upload_2017-4-4_22-1-2.png
 
Last edited:
Physics news on Phys.org
BvU said:
What's recursive in this method ?
Did you try typing it in and see what it does ?
Is this homework ?

1) mystery(n-1) is recursive
2) No it isn't homework. I'm studying for my exam
 
Neon32 said:
1) mystery(n-1) is recursive
I see. Maybe I misunderstand 'recursive' : I then expect a call to 'mystery' inside the method. Don't see one, so your idea of recursive is something else. Can you explain ?
Must be blind. Sorry.
 
BvU said:
All I've left is question 2 :smile:

Yes I've tried to trace it and all I got was (6 + ((4 + ((2 + . I don't understand how to continue it.
 
I get
Code:
 ----- 6 ---------- 
(6 + ((4 + ((2 + ( 0 
 + 1)
)
 + 3)
)
 + 5)
)
 --------------------------
when I input the number 6 in :

Code:
Sub mist(n As Integer)

    If n / 2 = 0 Then
    
        Debug.Print n
    ElseIf n Mod 2 = 0 Then
        Debug.Print "(" & n & " + ";
        mist n - 1
        Debug.Print ")"
    Else
        Debug.Print "(";
        mist n - 1
        Debug.Print " + " & n & ")"
    End If
    
End Sub

Sub test()
Dim n As Integer
again:
    n = CInt(InputBox("Give n "))
    Debug.Print "  "
    Debug.Print " ----- " & n & " ---------- "
    If n < 0 Then Exit Sub
    Call mist(n)
    Debug.Print " -------------------------- "
    GoTo again
End Sub
 
Neon32 said:
1) mystery(n-1) is recursive
No. The mystery() function is recursive because it calls itself.

Neon32 said:
Yes I've tried to trace it and all I got was (6 + ((4 + ((2 + . I don't understand how to continue it.
BvU didn't ask about tracing the function; he asked if you had tried typing it in and running it. Seeing what the function produces might be helpful in understanding what it does.
 
I am not fluent in Java. I find 1 / 2 is integer division and yields zero, so in the context of Myst "if N/2==0" is equivalent to " if n= 1" in VB.
If I take that into account the 0 goes away.
(and if I add some ; at the end of the print statements it all ends up on one line:
Code:
 ----- 6 ----------
(6 + ((4 + ((2 +  1 ) + 3)) + 5))
 --------------------------

Wonder why your routine doesn't render the odd numbers ...
 
There's a systematic way to find out the tracing for any recursive method like trees method or in a table or whatever. I want to know the method you used to find out the tracing not the final answer. My exam is in paper so I won't have jcreator or VBA during the exam xD
 
BvU said:
Didn't know that; was just trying to help. My systematic method has always been trial and error :rolleyes: -- especially the latter.
Good luck with your exam !
Thank you :).