Reputation: 3425
the First one doesn't work, its just trying to find a factorial, it returns NaN, so why is it if you use else if it doesnt work?
function FirstFactorial(num) {
if (num == 0) {
return 1;
}
else if (num > 1) {
return num * FirstFactorial(num - 1);
}
}
console.log(FirstFactorial(3)) === NaN
function factorial(n) {
if(n == 0) {
return 1
}
else {
return n * factorial(n - 1);
}
}
console.log(factorial(3)) == 6
Upvotes: 0
Views: 49
Reputation: 66334
You're missing a case for num === 1
, so when you do
function FirstFactorial(num) {
if (num == 0) {
return 1;
}
else if (num > 1) {
return num * FirstFactorial(num - 1);
}
}
FirstFactorial(3);
You're doing
3 * FirstFactorial(2);
3 * 2 * FirstFactorial(1);
3 * 2 * undefined; // NaN
Re-arrange the function logic thus
function FirstFactorial(num) {
if (num > 1) {
return num * FirstFactorial(num - 1);
}
return 1;
}
Upvotes: 1