2017-05-20 2 views
-3

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

+1

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

Répondre

-1

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:

  1. comme un cas de base lorsque la liste est vide, il utilise les valeurs sum et count pour calculer la moyenne. par exemple. (helper '() -4 2) ; ==> -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 de sum précédente et l'élément et comme count vous augmentez le précédent de 1. par exemple. (helper '(-1) 0 0) ; ==> (helper '() -1 1) ; ==> -1

  3. juste recruse avec le reste de lst et garder les mêmes valeurs que sum et count. (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 '())   ; ==> ??