Maison >interface Web >js tutoriel >Pourquoi ma fonction JavaScript récursive « taxes » échoue-t-elle et comment puis-je y remédier ?

Pourquoi ma fonction JavaScript récursive « taxes » échoue-t-elle et comment puis-je y remédier ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-12 10:56:10896parcourir

Why Does My Recursive JavaScript `taxes` Function Fail, and How Can I Fix It?

Comprendre la récursion en JavaScript

En programmation, la récursivité est une technique où une fonction s'appelle pour résoudre un problème. Bien que puissant, il est essentiel de comprendre comment fonctionne la récursivité pour éviter les erreurs.

Le problème : la récursion ne se termine pas

Dans la fonction fournie, le problème se pose avec l'appel récursif sur la ligne 9 :

taxes(tax, newSalary); 

Cet appel récursif ne renvoie pas de valeur, conduisant à une valeur de retour indéfinie lorsque la fonction se termine.

Résoudre le problème de récursion

Pour résoudre ce problème, une instruction return doit être ajoutée au corps de la fonction dans l'appel récursif, garantissant qu'une valeur est renvoyée à chaque fois que la fonction s'appelle.

return taxes(tax, newSalary);

En renvoyant une valeur de l'appel récursif, la fonction peut accumuler les résultats et arrêter la récursion lorsque la condition de la ligne 6 n'est plus remplie (c'est-à-dire, taxWage ≤ minWage).

Flux de fonctions récursives

  1. La fonction calcule les impôts initiaux.
  2. Si le taxWage dépasse un salaire minimum prédéfini (minWage), il calcule les taxes supplémentaires de manière récursive.
  3. Il met à jour le montant de la taxe en fonction du taux d'imposition et du taxWage.
  4. Il réduit le taxWage de la différence entre le salaire actuel et le salaire minimum.
  5. Il continue la récursion jusqu'à ce que le taxWage devienne égal ou inférieur au salaire minimum.
  6. La fonction cumule les taxes au fur et à mesure en les ajoutant aux taxes initiales.

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