0

我需要编写一个基本的方案程序,可以找到一个列表的中位数和另一个平均值。

到目前为止,这是我想出的:

意思是:

(define (mean lst)
   (if (null? lst) ()
       (+ 1 (car lst) (mean (cdr lst))))

我知道我需要在某处划分长度,但不知道该怎么做。我对此的思考过程是将每个元素添加到列表的堆栈中,然后除以列表的长度?

中位数:

我不确定从哪里开始计算中位数。我知道我需要确定列表是否包含奇数个元素或偶数个元素,所以我想出了

(define (median lst)
  (if (integer? (/ (length lst) 2)  ;which is the one for even

我不知道我是否需要另一个程序才能让我进入列表中间?

4

1 回答 1

1

median程序已在此处讨论过。

计算mean很简单,只需将所有元素相加并除以列表的长度,唯一需要注意的特殊情况是当列表为空时(因为这将导致除以零:长度为零!) ,返回一个适当的值来表明这一点。

现在你肯定知道如何将所有元素添加到一个列表中,如有疑问,请咨询你的导师,但这是一个基本操作,应该没有问题。

于 2013-10-28T20:40:31.080 回答