方案大于平均功能

时间:2018-11-27 15:05:30

标签: functional-programming scheme

我正在使用Scheme(在Racket博士中为简单方案)编写程序,该程序接受多个整数,然后是整数值。我需要能够找到已经开始工作的列表的平均值,并且能够计算出比平均值更大的数字并显示有多少。

;;Function for the sum of list
(define (sum listlen) 
  (if
    (null? listlen)
    0
    (+ (car listlen) (sum (cdr listlen)))
  )
)






;;This is the part I am having trouble with
(let ((avg  (/ (apply + (cdr numbers)) (car numbers))))
  (count (lambda (x) (< x avg)) (cdr numbers)))

我发现比平均函数大的功能给我造成了不匹配。它说 “计数:对冲不匹配; 预期的参数数量与给定数量不匹配 预期:1 给出:2 参数...:“

我敢肯定,如果我的功能超出平均水平,我做错了什么,但是我一生都无法弄清它是什么

1 个答案:

答案 0 :(得分:1)

;;Function for the sum of list
(define (sum listlen) 
  (if
    (null? listlen)
    0
    (+ (car listlen) (sum (cdr listlen)))
  )
)

这实际上就是(define (sum lst) (apply + lst))

下一步

(< x avg)

实际上应该是(> x avg)(计数大于平均值的数字)吗?

最后,http://docs.racket-lang.org/manual@simply-scheme/index.html代表count

  

返回单词中的字母数或句子中的单词数。

您是说(length (filter (lambda (x) (> x avg)) (cdr numbers)))之类的意思吗? (也可以使用reduce,或命名为let或其他名称。)