Rekursive Funktion gibt Undefiniert zurück
Bei der Arbeit mit rekursiven Funktionen tritt eine Schwierigkeit auf: Sie können manchmal einen unerwarteten Wert von undefiniert zurückgeben. Dieses Problem kann in Szenarios wie diesem auftreten:
function calculateTaxes(tax, taxWage) { const minWage = firstTier; if (taxWage > minWage) { tax += calculateDifference(taxWage) * calculateTaxStep(taxWage); const newSalary = taxWage - calculateDifference(taxWage); calculateTaxes(tax, newSalary); } else { return tax + taxWage * calculateTaxStep(taxWage); } }
Hier ist offensichtlich, dass sich die Funktion weiterhin selbst aufruft, ohne einen Wert im rekursiven Zweig zurückzugeben. Diese Auslassung führt dazu, dass die Funktion undefiniert zurückgibt.
Um dieses Problem zu beheben, muss unbedingt sichergestellt werden, dass der rekursive Aufruf einen Wert zurückgibt oder eine Rückgabevariable festlegt. Der folgende Code demonstriert das beabsichtigte Verhalten:
function calculateTaxes(tax, taxWage) { const minWage = firstTier; if (taxWage > minWage) { tax += calculateDifference(taxWage) * calculateTaxStep(taxWage); const newSalary = taxWage - calculateDifference(taxWage); return calculateTaxes(tax, newSalary); } else { return tax + taxWage * calculateTaxStep(taxWage); } }
Das obige ist der detaillierte Inhalt vonWarum geben rekursive Funktionen manchmal Undefiniert zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!