2017-02-01 2 views
0

Je dois utiliser DrRacket pour ce problème mais chaque fois que j'exécute le code, j'obtiens ce message d'erreur "gcd: ce nom a été défini précédemment et ne peut pas être défini ". (Aussi je choisis la langue comme étudiant avancé [personnalisé] dans DrRacket ci-dessous est mon code, sa fonction récursive pour trouver le plus grand commun diviseur.gcd: ce nom a été défini précédemment et ne peut pas être redéfini

(define (gcd n m) 
    (cond [(= m 0) n] 
    [else (gcd m (modulo n m))])) 

(check-expect (gcd 0) 0) 
(check-expect (gcd 12 8) 4) 
(check-expect (gcd 6 12 8) 2) 

Répondre

2

La fonction gcd est déjà fourni dans le cadre de l'avancée Langue de l'étudiant, as you can see in the documentation here Contrairement au langage Racket complet, les langues d'enseignement ne permettent pas de définir des fonctions avec le même nom que les fonctions de la bibliothèque.Notez que si vous supprimez la définition de gcd, tous vos tests réussissent

, alors vous avez probablement besoin de nommer votre fonction gcd autre chose. ssignment nécessite que votre fonction soit nommée gcd, alors il y a probablement un problème avec l'affectation.

+0

oh ouais changer le nom fonctionne mais maintenant je suis confronté à une fonction d'erreur. Je l'ai changé en gcd-structural et ai obtenu ceci "gcd-attend 2 arguments, mais trouvé seulement 1: attend 2 arguments, mais trouvé seulement 1". Je suis si confus. –

+0

En fait, vous savez ce que j'ai trouvé le problème avec le contrôle attendez, il ne peut pas être 0 ou autre chose. seulement 2 arguments, donc le second check-expect est la forme correcte. Eh bien, cela dit aux gens de combien stupide je reçois parfois haha ​​... hé merci pour votre aide si. –