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
Libérer: 2024-12-19 22:04:12
original
955 Les gens l'ont consulté

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;
    }
}
Copier après la connexion

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);
}
Copier après la connexion

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal