Rekursive Funktion gibt undefiniert zurück
Die bereitgestellte Funktion berechnet Steuern mithilfe der Rekursion, kann die Rekursion jedoch nicht stoppen. Dieses Problem entsteht dadurch, dass im rekursiven Arm der Funktion kein Wert zurückgegeben wird.
Im if (taxWage > minWage)-Block:
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); }
Der Code berechnet Steuern rekursiv, tut dies jedoch nicht einen Wert zurückgeben oder returnTax festlegen. Das Fehlen einer Return-Anweisung führt zu einem undefinierten Rückgabewert.
Um dies zu beheben, kann eine Return-Anweisung zu diesem Arm hinzugefügt werden:
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); }
Mit dieser Anpassung wird die Funktion jetzt ausgeführt Geben Sie einen Wert zurück, um zu verhindern, dass die Rekursion auf unbestimmte Zeit fortgesetzt wird.
Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Steuerberechnungsfunktion „Undefiniert' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!