# Syntactic explanation of this line of sum(arr, n - 1 ) + arr[n - 1]

Hi.

I want to comprehend syntactically what “( arr, n - 1 )” and "arr[ n - 1 ] "mean. I understand how recursion works under the hood but I can’t wrap my mind around what are the “values”. My guess is ( arr, n - 1) references a range, and arr[ n - 1 ] is the reference of an index of the array.

I come to this conclusion by logging first arr[ n - 1 ] then ( arr, n - 1 ), for the first log I get back the element of arr which is at index 2 (4). What confuses me is with (arr, 2), I get back the elements of arr and the number 2 and I don’t understand or see it possible for JS to accept that as a range.

Code so far

``````
function sum(arr, n) {
// Only change code below this line
if (n <= 0) {
return 0;
} else {
return sum(arr, n - 1 ) + arr[n - 1];
}
// Only change code above this line
}
console.log(sum(, 0));
console.log(sum([2, 3, 4], 1));
console.log(sum([2, 3, 4, 5, 6], 3));

//test
let arr = [2, 3, 4, 5, 6];
let n = 3;
console.log(arr[n - 1]);
console.log(arr, n - 1 );

``````

Challenge: Replace Loops using Recursion

It isn’t a range.

The `sum` function is defined with two parameters:

`function sum(arr, n) { ... }`

The first parameter is an array, the second is a number.

So when you call the `sum` function recursively, you have to provide two arguments, an `array` and a `number`.

That’s what ` sum(arr, n - 1 )` is.

And, with every recursive call, the number `n` is reduced by 1.

Does that make a bit more sense?

1 Like

Using this Visualizer might help as well.

1 Like

yeaaaah!!.. sum(arr, n - 1 ) is the recursive call of the original function, now I get it. Thanks for taking the time and clarifying this for me.

Awesome, thanks for sharing this is really useful.