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?