**Tell us what’s happening:**

Describe your issue in detail here.

```
**Your code so far**
```

```
function sum(arr, n) {
// Only change code below this line
if (n <= 0) {
return 1;
} else {
return sum(arr, n - 1) + arr[n - 1];
}
// Only change code above this line
}
```

```
**Your browser information:**
```

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36`

**Challenge:** Basic JavaScript - Replace Loops using Recursion

**Link to the challenge:**

can anyone please help me understand recursion? it’s the Replace loops using recursion challenge?

Is this really the value you want to return? What would happen if I called your function as:

```
sum([1,2,3], 0);
```

Thank you turns out I only needed to return 0. So I need to return 0 in terms of itself which is 0(base case)? Also i dont understand the recursion sum(arr, n - 1) + arr[n - 1] does it mean for e.g 5 - 6, 5 - 6, 5 - 6 or 1 + 1, 1 + 1 , 1 + 1 ?

how do I know that the value of sum is 1, 2, 3?

Remember what the function is doing. It adds the first `n`

numbers of the array `arr`

. So you can’t know what the sum of `[1,2,3]`

is unless you know what the value of `n`

is.

1 Like

So, what the condition or code (arr, n -1) and arr[n -1] is constant unless the parameters are different? also will my initialized value always return the same value initialized?

I think I understand it a little better so ill only use recursion when n is less than and equal to 0? in cases where its more than 0 it will result in an infinite loop? I need to know this because I dont know in what other instances ill have to use it, maybe when i need to divide? or subtract?

`arr`

and `n`

are variables take the value of whatever you pass into them when you call the function:

`sum([1,2,3], 3`

`arr`

would be `[1,2,3]`

and `n`

would be `3`

.

Using these initial values, when the first recursive call is made it would call the function as:

```
return sum([1,2,3], 2) + arr[2];
```

1 Like

Actually, when `n <=0`

then you don’t use recursion, you return `0`

. This is the base case in your code:

```
if (n <= 0) {
return 0;
}
```

Look closely a the recursion in your function:

```
return sum(arr, n - 1) + arr[n - 1];
```

What is happening to the second value passed into `sum`

each time?