Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

About Recursion for Newbies in Java

So, I have this code, which is just the way I solved an exercise that was given to me, which consisted of creating a recursive function that received a number, and then gave you the sum of 1, all the numbers in between, and your number. I know I made it sound confusing, but here's an example:

If I inserted the number 5, then the returned value would have to be 15, because: 1+2+3+4+5 = 15.

public class Exercise {

    public static void main(String[] args) {
        int returnedValue = addNumbers(6);
        System.out.print(returnedValue);
    }

    public static int addNumbers(int value) {
        if (value == 1) return value;
        return value = value + addNumbers(value-1);
    }

}

Technically speaking, my code works just fine, but I still don't get why Eclipse made me write two returns, that's all I would like to know.

Is there a way I could only write "return" once?

like image 980
Daniel Marcano Avatar asked Dec 10 '25 19:12

Daniel Marcano


2 Answers

Sure, you can write it with just one return:

public static int addNumbers(int value) {
   if (value > 1) {
      value += addNumbers(value - 1);
   }
   return value;
}

As you can see, it's done by having some variable retain the running result until you get to the end. In this case I was able to do it in-place in value, in other cases you may need to create a local variable, but the idea of storing your intermediate result somewhere until you get to the return point is a general one.

like image 109
pjs Avatar answered Dec 12 '25 07:12

pjs


There should be two returns. Your first return says

if at 1: stop recurstion

and the second one says

continue recursion by returning my value plus computing the value less than me

You could combine them by using a ternary:

return value == 1 ? value : value + addNumbers(value - 1)

But it is not as readable.

Recursive funtions like

  • Fibbonacci's sequence
  • Fractals
  • Etc.

Use themselves multiple times because they contain themselves.

like image 37
Aly Avatar answered Dec 12 '25 07:12

Aly



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!