Heim > Web-Frontend > js-Tutorial > Warum führt diese rekursive Steuerberechnungsfunktion zu einer undefinierten Rekursion?

Warum führt diese rekursive Steuerberechnungsfunktion zu einer undefinierten Rekursion?

Susan Sarandon
Freigeben: 2024-12-19 22:04:12
Original
956 Leute haben es durchsucht

Why Does This Recursive Tax Calculation Function Result in Undefined Recursion?

Undefinierte Rekursion in der Steuerberechnung

In dieser rekursiven Steuerberechnungsfunktion:

function taxes(tax, taxWage) {
    var minWage = firstTier; //defined as a global variable
    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);
    } else {
        returnTax = tax + taxWage * taxStep(taxWage);
        return returnTax;
    }
}
Nach dem Login kopieren

die Rekursion wird nicht beendet . Konkret liegt das Problem im Arm der Funktion, die den rekursiven Aufruf aufruft:

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);
}
Nach dem Login kopieren

Hier gibt die Funktion keinen Wert zurück und legt die Variable returnTax nicht fest. Wenn eine Funktion nicht explizit zurückgibt, gibt sie standardmäßig undefiniert zurück. Folglich wird die Rekursion auf unbestimmte Zeit fortgesetzt, was zu undefinierten Ergebnissen führt.

Um dieses Problem zu beheben, sollten Sie diesen Teil des Codes wie folgt ändern:

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);
}
Nach dem Login kopieren

Diese Änderung stellt sicher, dass die Funktion zurückkehrt das Ergebnis des rekursiven Aufrufs, wodurch die Werte ordnungsgemäß in der Rekursionskette weitergegeben werden.

Das obige ist der detaillierte Inhalt vonWarum führt diese rekursive Steuerberechnungsfunktion zu einer undefinierten Rekursion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage