返回参数平均值的 Scheme 函数

时间:2021-03-08 03:51:32

标签: scheme racket

我正在尝试在方案中创建一个函数,该函数返回其参数的平均值。这就是我到目前为止所拥有的。运行代码时我得到 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)

1 个答案:

答案 0 :(得分:3)

(define (avg . args)
  (/ (apply + args) (length args)))

测试:

(avg 4 5 5 5 5 5)
;; => 29/6
相关问题