Hey donc je crée une fonction (divise n), qui est censée calculer le nombre de diviseurs dans un nombre n à l'aide d'une fonction modulo et une fonction qui agit comme un compteur descendant du nombre n. Mon problème est que la fonction modulo doit générer un vrai ou faux, selon que le nombre est entier mais mon instruction ifRécursion du nombre parfait dans SCHEME. (débutant)
(if (= (divides n k) #f)
0
Im ne sais pas pourquoi, mais le code d'évaluer l'habitude de l'instruction if comme vrai ou faux .. il juste le saute. Aussi je ne suis pas sûr que 0 devrait être la bonne sortie que je veux juste sauter ce numéro et ne pas le compter.
Heres mon code:
(define (divides a b) (= 0 (modulo b a)))
(define (divisors-upto n k)
(if (= (divides n k) #f)
0
(+ k (divisors-upto n (- k 1)))))
(define (divisors n) (divisors-upto n n))
(divisors 4) ;for example should produce the result 3
oui ive travaille sur cette fonction de deux façons grâce à l'aide mal pour cette solution –
je ne l'ai jamais pensé de cette façon , mais maintenant je vois que vous pouvez définir 'non' simplement comme' (cut eq? #f <>) '. L'idée de comparaison booléenne, en général, est si offensante pour moi que toute l'idée a été tirée de ma tête. :-) –
@Roark Super! et n'oubliez pas d'accepter la réponse qui vous a été la plus utile dans cette question et dans vos autres questions - cliquez simplement sur la coche à gauche. –