java - Method calling itself.. recursive? -


public static int m(int i, int j)     {        if ( > j)         return 0;       else       {     i++;         m(i++, j);   }   return i;     } 

i had 2 questions. 1.) returned out.print(m(3,8)); , 2.) how many times method m called? answers should 5 , 7 respectively.

when worked out question 1, came out 5 way did incorrect because method not called 7 times, called twice. way did went straight else statement since (i > j) false @ start , method m called again time (4, 8) figured still false went line m called , variable changed 5 because of i++ in m(i++, j). after return 5 value of i.

that wrong added out.prints values of throughout program see how value changing , went 3 9 out.print(i); @ beginning of method m. out.print(i); right before return i; showed values started go backwards 10 5 , method called 7 times. how work?

edit: after logging it, able come logic clarify correct.

method m called 3,8 @ start. after, calls 4,8 5,8....until 9,8 if statement becomes true , method returns 0. called 6 times starts go backwards or decrement-ing 6 times since m(i++, j) post(the i) becomes 10 , 10 returned, 9, 8, 7, 6, , 5. when returned 10 1, 9 2, 8 3, 7 4, 6 5, , 5 6. since 6 when = 5, value returned. correct? , if is, more in depth explanation nice have.

to better understand what's happening, might refactor code such:

public static int m(int i, int j) {     static int calls = 0;          system.out.println("entering.  count: " + calls);     calls++;      system.out.println("i = " + i);     system.out.println("j = " + j);      if (i > j) {          system.out.println("returning 0");         return 0;     } else {         i++;             m(i++, j);     }      system.out.println("returning " + i);     return i;     } 

note haven't modified of actual logic. i've done add statements print values, , variable keep track of number of times method called.


Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -