首頁 >web前端 >js教程 >為什麼遞歸函數有時會傳回未定義的結果?

為什麼遞歸函數有時會傳回未定義的結果?

DDD
DDD原創
2024-12-27 11:23:10212瀏覽

Why Do Recursive Functions Sometimes Return Undefined?

遞歸函數傳回未定義

使用遞歸函數時會出現困難:它們有時會傳回意外的未定義值。在這樣的場景中可能會遇到此問題:

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

這裡,很明顯地該函數不斷呼叫自身,而在遞歸分支中沒有傳回值。此遺漏會導致函數傳回未定義。

要解決此問題,確保遞歸呼叫回傳值或設定回傳變數至關重要。以下程式碼示範了預期的行為:

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

以上是為什麼遞歸函數有時會傳回未定義的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn