再帰関数が未定義を返す
再帰関数を使用するときに問題が発生します。再帰関数は、予期しない値の未定義を返す場合があります。この問題は、次のようなシナリオで発生する可能性があります。
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); } }
以上が再帰関数が時々 unknown を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。