Recursive function returns undefined
In this arm of your function:
if (taxWage > minWage) {
// calculates tax recursively calling two other functions difference() and taxStep()
tax = tax + difference(taxWage) * taxStep(taxWage);
var newSalary = taxWage - difference(taxWage);
taxes(tax, newSalary);
}
you are not returning a value from the function or setting returnTax
. When you don't return anything, the return value is undefined
.
Perhaps, you want this:
if (taxWage > minWage) {
// calculates tax recursively calling two other functions difference() and taxStep()
tax = tax + difference(taxWage) * taxStep(taxWage);
var newSalary = taxWage - difference(taxWage);
return taxes(tax, newSalary);
}
There is a bug with your recursion:
taxes(tax, newSalary);
You don't return anything when the condition in the if
evaluates to true. You need to change that to:
return taxes(tax, newSalary);
You have the necessary return
statement in the else
.