如何使一个函数在scheme中找到一个函数的均值


((define (sum list)
(if(null? list)
0
(+(car list)(sum(cdr list)))))
(define (mean list)
(if(null? list)
0

(/ (sum list) (length list))))
(mean (list 1 2 3 4))

返回的均值显然是2 1/2但它应该是2因为10/5是2我该怎么做才能得到正确的均值??

代码是正确的。(list 1 2 3 4)的和是10,这个列表有四个元素,所以结果是2 1/2

您还应该添加一些空格以提高可读性,并且不要使用函数名来命名变量(在本例中为list)。改进后的版本看起来像这样:

(define (sum lst)
(if (null? lst) 0
(+ (car lst)
(sum (cdr lst)))))
(define (mean lst)
(if (null? lst) 0
(/ (sum lst)
(length lst))))

测试:

(mean (list 1 2 3 4))
=> 2 1/2

注意,您也可以返回列表的总和:

> (apply + (list 1 2 3 4))
10

相关内容

  • 没有找到相关文章

最新更新