Maison >interface Web >js tutoriel >Pourquoi cette fonction de calcul de taxe récursive entraîne-t-elle une récursion indéfinie ?

Pourquoi cette fonction de calcul de taxe récursive entraîne-t-elle une récursion indéfinie ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-19 22:04:12959parcourir

Why Does This Recursive Tax Calculation Function Result in Undefined Recursion?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn