J'essaie de trouver la réponse à ma question mais je ne trouve rien sur Internet. Quelqu'un peut-il s'il vous plaît me dire comment écrire cette fonction? Merci beaucoup.créer une fonction de schéma qui renvoie la moyenne des nombres négatifs dans une liste
Répondre
C'est très facile. Vous pouvez le faire récursive:
(define (helper lst sum count)
...)
L'assistant le fait en utilisant soit cond
de imbriqué if
:
comme un cas de base lorsque la liste est vide, il utilise les valeurs
sum
etcount
pour calculer la moyenne. par exemple.(helper '() -4 2) ; ==> -2
Nous savons que la liste a au moins un élément. Vérifiez si le premier élément est négatif. Si c'est le cas, il récursive avec le reste de
lst
et en utilisant la somme desum
précédente et l'élément et commecount
vous augmentez le précédent de 1. par exemple.(helper '(-1) 0 0) ; ==> (helper '() -1 1) ; ==> -1
juste recruse avec le reste de
lst
et garder les mêmes valeurs quesum
etcount
.(helper '(1) -1 1) ; ==> -1
Maintenant, quand vous avez ce fonctionne, vous pouvez simplement l'inclure dans votre fonction réelle et de l'utiliser:
(define (average-negative lst)
(define (helper lst sum count)
...)
(helper lst 0 0))
test
(average-negative '(-1)) ; ==> -1
(avwerage-negative '(1 -2 3 -4)) ; ==> -3
Et pour les plus courageux:
(average-negative '()) ; ==> ??
Ce sont des étapes distinctes; 1) filtrer les nombres non négatifs de la liste; 2) additionner les numéros de cette liste; 3) calculer combien de nombres il reste; 4) calculer la moyenne. Vous avez probablement résolu la plupart de ces problèmes récemment dans différents contextes. – molbdnilo