Récursion non définie dans le calcul de la taxe
Dans cette fonction de calcul de taxe récursive :
function taxes(tax, taxWage) { var minWage = firstTier; //defined as a global variable if (taxWage > minWage) { //calculates tax recursively calling two other functions difference() and taxStep() tax = tax + difference(taxWage) * taxStep(taxWage); var newSalary = taxWage - difference(taxWage); taxes(tax, newSalary); } else { returnTax = tax + taxWage * taxStep(taxWage); return returnTax; } }
la récursivité ne parvient pas à se terminer . Plus précisément, le problème réside dans le bras de la fonction qui appelle l'appel récursif :
if (taxWage > minWage) { // calculates tax recursively calling two other functions difference() and taxStep() tax = tax + difference(taxWage) * taxStep(taxWage); var newSalary = taxWage - difference(taxWage); taxes(tax, newSalary); }
Ici, la fonction ne renvoie aucune valeur ni ne définit la variable returnTax. Lorsqu'une fonction ne renvoie pas explicitement, elle renvoie par défaut undéfini. Par conséquent, la récursion se poursuit indéfiniment, conduisant à des résultats indéfinis.
Pour résoudre ce problème, vous devez modifier cette partie du code comme suit :
if (taxWage > minWage) { // calculates tax recursively calling two other functions difference() and taxStep() tax = tax + difference(taxWage) * taxStep(taxWage); var newSalary = taxWage - difference(taxWage); return taxes(tax, newSalary); }
Cette modification garantit que la fonction renvoie le résultat de l'appel récursif, propageant correctement les valeurs dans la chaîne de récursion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!