Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recursive explanation

Tags:

java

recursion

Today in the class of Java the professor came up with this example but I really couldn't understand very well the process how to go through this method in order to get the result = 4. Could any body please put some lines as clear as possible how is that this method is solved?? Thank you Ok so this is the method:

public static int mystery(int[] values, int start, int value)
{
    if(start == values.length) {
        return value;
    }
    else
        return Math.max(value, mystery(values, start+1, values[start]));
}
like image 764
Bart g Avatar asked Aug 28 '26 22:08

Bart g


2 Answers

The result isn't 4, but the maximum in the array.

It goes like this:

values is the array of elements.

start is the current index.

value is the current maximum.

If the current index is past the length of the array, return the current maximum. This is the first line of code and the halting condition.

Otherwise, return the maximum between the current maximum and the maximum of the array past the current index. Which will, recursively, ultimately return the maximum in the array.

You initially call this function with start = 0 and value = 0.

Assume values = [2,5,1].

mystery ( [2,5,1], 0 , 0 ) ->
  start (0) != values.length (3) ->
  return max (0, mystery( [2,5,1], 1, 2 ) ->
      mystery ( [2,5,1], 1, 2 ) ->
        start (1) != values.length ->
        return max (2, mystery( [2,5,1], 2, 5 ) ->
            mystery ([2,5,1], 2, 5) ->
            start(2) != values.length ->
                return max(5, mystery( [2,5,1], 3, 2) ->
                   start(3) == values.length ->
                   return value (1)
                -> return max(5,1)
            -> return 5
         -> return max(2,5)
       -> return 5
   -> return max(0,5)
-> return 5
like image 51
Luchian Grigore Avatar answered Aug 31 '26 17:08

Luchian Grigore


Here is a working example that you can play with: (it is in javascript, but functions the same way)

http://jsfiddle.net/rEZ66/1/

Basically, the function mystery takes the array as input, and loops though each element return the maximum element.

When it runs, the recursive function compares the highest value it has found so far (value) to the current element of the array(values[start]), and loops again using the current largest value, against the next element start+1

like image 40
Michael Jasper Avatar answered Aug 31 '26 19:08

Michael Jasper



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!