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

Warum geben rekursive Funktionen manchmal Undefiniert zurück?

DDD
DDDOriginal
2024-12-27 11:23:10182Durchsuche

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);
  }
}

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!

Stellungnahme:
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