我正在尝试在方案中创建一个函数,该函数返回其参数的平均值。这就是我到目前为止所拥有的。运行代码时我得到 6,它应该是 29/6。我试图在不使用递归的情况下做到这一点
(define iota
(lambda (x)
(letrec
((loop
(lambda (x acc)
(if (= x 0) acc
(loop (sub1 x) (cons x acc))))))
(loop x '()))))
(define avg
(lambda ls
(let ((size (apply + (map (lambda (x) 1) ls))))
(apply + (map (lambda (x) (apply * (iota x))) ls))
size)))
(avg 4 5 5 5 5 5)
答案 0 :(得分:3)
(define (avg . args)
(/ (apply + args) (length args)))
测试:
(avg 4 5 5 5 5 5)
;; => 29/6