遞歸函數傳回未定義
使用遞歸函數時會出現困難:它們有時會傳回意外的未定義值。在這樣的場景中可能會遇到此問題:
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中文網其他相關文章!