Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How should I increment numbers using recursion?

Tags:

java

recursion

I have a problem with numbers that I want to increment using a recursive function. The function didn't return the value as I was expecting. Upon debugging I saw the numbers being increased but when the value is returned, it appears that the adjustments to the numbers are returned in reverse order.

Here is a simple example:

private static int recursionTest(int num){
    if (num < 10){
        recursionTest(++num);
    }
    return num;
}

public static void main(String[] args) {
    System.out.println(recursionTest(1));
}

The output is always 2. When I'm using the step-through debugger I see the following:

  1. The number increases by 1 with each iteration.
  2. When the number reaches 10 the return statement is executed.
  3. The debugger then highlights the "recursionTest(++num);" line but the number is decreased by 1.
  4. The return statement is executed again.
  5. Steps 3 and 4 is repeated until a value of 2 is finally returned.

Why is the value being decremented in the end, and how do I return the initially calculated value?

like image 500
NotMyName Avatar asked Dec 06 '22 03:12

NotMyName


2 Answers

It should be like this:

private static int recursionTest(int num){
    if (num < 10){
       return recursionTest(++num);
    }
    else
       return num;
}
like image 104
Baby Avatar answered Dec 24 '22 07:12

Baby


This is because you're still returning num instead of the result of your recursive function.

private static int recursionTest(int num){
    if (num < 10){
        return recursionTest(++num); 
    }
    return num;
}
like image 40
ggmathur Avatar answered Dec 24 '22 08:12

ggmathur