Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

squareRoot(6) returns 3, squareRoot(12) returns 4; test expects squareRoot(3, 1) = 1.8 (correct: 1.7)

Ouverte Adaptée aux débutants
#2,231 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
78/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
javascript
Domaine
testing-qa

Piste de recherche

Commencez par src/algorithms/math/square-root/squareRoot.js et l’assertion qui échoue dans squareRoot.test.js:30 ; comparez la condition d’arrêt de la boucle aux exemples de l’issue. Exécutez les tests de racine carrée et vérifiez les entrées indiquées, notamment squareRoot(3, 1). Le travail est terminé lorsque les résultats sont correctement arrondis et que le blocage signalé dans #2187 est résolu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

src/algorithms/math/square-root/squareRoot.js stops Newton's iteration when |number - root²| <= 10^-tolerance (line 31). That bounds the error of the square, not of the root. Newton's method approaches √n from above, so the loop stops on an overestimate, and rounding then goes the wrong way.

squareRoot(6);     // 3     expected 2   (√6 = 2.449)
squareRoot(12);    // 4     expected 3   (√12 = 3.464)
squareRoot(3, 1);  // 1.8   expected 1.7 (√3 = 1.732)

squareRoot.test.js:30 asserts expect(squareRoot(3, 1)).toBe(1.8), so the test enshrines the bug. For n = 0..3000 and tolerance 0..6 there are 68 wrong results.

Fix: iterate until the root stops decreasing (while (next < root)), then round. Checked on 259,695 inputs against correctly rounded Math.sqrt; the only mismatches are 53 last-digit float effects at tolerance >= 10. This also removes the hang reported in #2187 (squareRoot(65549, 11)). The #2187 change alone still returns 3 and 1.8.


Found during an independent property-based audit of this repo (full report and reproducible harness: https://github.com/devladpopov/algorithm-autopsy/tree/main/autopsy-02).

Langage dominant
JavaScript
Étoiles
197k
Forks
31k
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de trekhleb/javascript-algorithms

Toutes les issues de trekhleb/javascript-algorithms

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.