Cela devrait résoudre les problèmes:
(define (gcd a b)
(cond [(= b 0) a]
[else (gcd b (modulo a b))]))
Vous encerclaient à tort certaines expressions entre parenthèses, et quelques parenthèses étaient absents de l'expression cond
.
Notez que dans le schéma, lorsque vous entourez quelque chose entre parenthèses, dire (a)
vous dire l'interprète: a
est une procédure sans argument et je veux l'appeler, et cela n'a pas été le cas ici, est a
juste un nombre.
En outre, pour des raisons de lisibilité, il est une bonne idée d'utiliser []
au lieu de ()
pour séparer chacune des conditions dans une expression cond
, comme indiqué dans mon code ci-dessus - mais ne pas les oublier, ils sont obligatoires et dans votre code, vous les avez oubliés dans la première condition.
Problèmes de parenthèses. Utilisez un bon IDE et indentez correctement pour éviter ce genre de problème, pour l'instant regardez ma réponse pour voir ce qui s'est mal passé. –
Il est à noter que votre gcd ne fonctionne que si a = b. – carla