A recursive function is a function that calls itself and has a base case to terminate the recursion.
Evaluate each option:
Option A:
const sumToTen = numVar = > {
if (numVar < 0)
return;
return sumToTen(numVar + 1);
};
This function calls itself: sumToTen(numVar + 1) — so it is recursive.
However, the base condition is if (numVar < 0) return;.
If you call sumToTen(0):
numVar < 0 is false, so it calls sumToTen(1), then sumToTen(2), and so on, incrementing forever.
There is no condition to stop the recursion when numVar increases; it will eventually cause a stack overflow.
This code does not represent a properly working recursive function with a valid termination for increasing values and is not a good example of correct recursion.
Option B:
function factorial(numVar) {
if (numVar < 0) return;
if (numVar === 0) return 1;
return numVar - 1;
}
This function does not call itself anywhere.
It has conditional returns, but there is no recursive call such as factorial(numVar - 1).
Therefore, it is not recursive at all.
Option C:
const factorial = numVar = > {
if (numVar < 0) return;
if (numVar === 0) return 1;
return numVar * factorial(numVar - 1);
};
This is a classic recursive factorial implementation.
It calls itself with a smaller argument: factorial(numVar - 1).
Base cases:
If numVar < 0, it simply returns (could be treated as invalid input).
If numVar === 0, it returns 1, which is the mathematical definition of 0! (zero factorial).
For positive integers, it correctly multiplies numVar by factorial(numVar - 1) until it reaches the base case.
This is a correct and working recursive function.
Option D (corrected):
let countingDown = function(startNumber) {
if (startNumber > 0) {
console.log(startNumber);
return countingDown(startNumber - 1);
} else {
return startNumber;
}
};
This function also calls itself: countingDown(startNumber - 1).
Base case:
When startNumber is not greater than 0 (i.e., 0 or negative), it returns startNumber and stops recursing.
For example, countingDown(3) would:
Log 3, call countingDown(2)
Log 2, call countingDown(1)
Log 1, call countingDown(0)
At 0, it hits the else branch and returns 0, ending the recursion.
This is a valid working recursive function structure (once syntax is corrected).
Therefore, the snippets that show working recursive functions are:
Answer: C, D
Study Guide / Concept References (no links):
Definition of recursion: a function calling itself
Base case vs recursive step
Recursive factorial implementation
Recursive countdown example
Importance of a terminating condition to avoid infinite recursion