I tried solving this problem using recursion and I dont understand one thing about recursions…

To callback on the function checkPrime(), how come I need to add return?

How come the function doesn’t call back on itself without the return?

The function sumPrimes() already has a return checkPrime() to call the function and the function checkPrime() has a return sum that should end the function with the sum.

Why does checkPrime(num-1) need a return in the front?

Tell us what’s happening:
Describe your issue in detail here.

**Your code so far**

function sumPrimes(num) {
var sum = 0;
function checkPrime(num) {
if (num<=1) {
return sum
}
for (let i=2; i<num; i++) {
if (num % i === 0) {
return checkPrime(num-1)
}
}
sum += num
return checkPrime(num-1)
}
return checkPrime(num)
}
sumPrimes(10);

**Your browser information:**

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

Ohhhh… Your CheckPrime is just a faux recursion sumPrimes function.

The name choice is confusing.

function sumPrimes(num) {
let sum = 0;
function recursiveCheat(num) {
if (num<=1) {
return sum;
}
// This is the only part that checks for primality
for (let i=2; i<num; i++) {
if (num % i === 0) {
return recursiveCheat(num-1);
}
}
sum += num
return recursiveCheat(num-1);
}
return recursiveCheat(num);
}
sumPrimes(10);

But this is really a confusingly written while loop

function sumPrimes(num) {
let sum = 0;
while (num > 1) {
// This is the only part that checks for primality
let isPrime = true;
for (let i=2; i<num; i++) {
if (num % i === 0) {
isPrime = false;
break;
}
}
if (isPrime)
sum += num
num--;
}
return sum;
}
sumPrimes(10);