我正在使用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 参数...:“
我敢肯定,如果我的功能超出平均水平,我做错了什么,但是我一生都无法弄清它是什么
答案 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
或其他名称。)