如何编写列表的均值和中位数的方案程序?

时间:2013-10-28 20:34:05

标签: scheme

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

这是我到目前为止所提出的:

平均:

(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

我不知道是否需要另一个程序让我到列表中间?

1 个答案:

答案 0 :(得分:1)

已经讨论了median程序here

计算mean很简单,只需添加所有元素并除以列表的长度,唯一需要处理的特殊情况是列表为空时(因为这会导致除以零:长度为零!),返回一个指示此值的适当值。

到目前为止,你肯定应该知道如何添加列表中的所有元素,如果有疑问请与教师核实,但这是一个基本操作,它应该不是问题。