forum

home / developersection / forums / change parameter handled during recursion in java

Change parameter handled during recursion in Java

Anonymous User 1933 04-Nov-2014
Here is a recursive method:
private static int minimumTotal(List<List<Integer>> triangle, int index) { 
    if (triangle.isEmpty()) { 
        return 0; 
    } 

    List<Integer> row = triangle.remove(0); 

    int sum1 = row.get(index) + minimumTotal(triangle, index);
    int sum2 = row.get(index) + minimumTotal(triangle, index + 1);
    return Math.min(sum1, sum2); 
}

I want sum1 and sum2 to be calculated on the same triangle object. However, what happens is the following: after sum1 is calculated, one row of a triangle (and then another within the recursion and another ...). Now, when sum2 has calculated it has a triangle that is empty!

1.  This confuses me regarding how Java handles recursion. Why is the object triangle getting modified? I was under the assumption that it should be a "local" data at every recursion level.

2.  How can we rewrite the code to get the desired behavior?


Updated on 04-Nov-2014

I am a content writter !

Can you answer this question?

Answer

1 Answers

Liked By