Heim > Web-Frontend > js-Tutorial > Warum geben rekursive Funktionen manchmal Undefiniert zurück?

Warum geben rekursive Funktionen manchmal Undefiniert zurück?

DDD
Freigeben: 2024-12-27 11:23:10
Original
184 Leute haben es durchsucht

Why Do Recursive Functions Sometimes Return Undefined?

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

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage