Can anybody tell me what this n-1 thing do? and statement after else

Tell us what’s happening:

Your 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([2,3,4,5],1))

Your browser information:

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

Challenge: Replace Loops using Recursion

Link to the challenge:

Hi, so you basically to answer your question its this.

// Describing length
sum(arr, lengthOfArr);

// Indexing based on length
arr[lengthOfArr - 1]

in a more detail manner this is what is doing on the challenge.

function sum(arr, n) {
  // Only change code below this line
  if( n <= 0 ){  
  // n in this case is 3 if its true meaning equal and small than 0 then
  // will return false. meaning 0. (this is your base case).
    return 0;
  }
    /* 
      if does not meet the criteria above will call the function itself 
      and will return the function of sum(arr, n-1). witch is the
      first element of the array.
      In addition this line of code arr[n-1]; will do the following work.
      Lets have this in consideration Example code:
     
      n = 3
      array = [2,3,4];
      function: sum([2,3,4], 3);

    */
    return sum(arr, n - 1) + arr[n - 1]; 
    /* 
      3 is the n put it in this code line arr[3 - 1]; = arr[2] now this 
      is the array base index, witch is 4 in the array.
    */ 

    // then we have this arr[2] = 4
    //  (arr, 3) =  +  arr[2] = 4
    //  (arr, 2) =  +  arr[1] = 3
    //  (arr, 1) =  +  arr[0] = 2 
    // 4 + 3 + 2 = 9 
   
  // Only change code above this line
}
  var result = sum([2,3,4], 3); //
  console.log(result); // Output: 9
1 Like

thanks got it. :slight_smile:

Awesome happy coding :slight_smile: