Scheme中整数列表的标准偏差。
写两个表达式来解决这个问题:
- 首先表达式,计算>之差的平方和。每个数字和人口平均值
- 其次,使用该数字计算标准偏差。
到目前为止我的代码:
(define (average lst)
(/ (apply + lst) (length lst)))
(define (std-dev lst)
(sqrt
(/
(innerFunction lst (average lst))
(length lst)
)
)
)
(define (innerFunction lst avg)
(if
(null? lst)
0
(+
(*
(- (car lst) avg)
(- (car lst) avg)
)
(innerFunction (cdr lst) average)
)
)
)
(错误是“需要数字,但得到#Closure”)。
我一周前才开始使用Scheme,所以我对它不太熟悉,你看到我的代码出了什么问题吗?我如何修复它,还有一种更简单的方法可以使用mapping
来实现这一点,就像我使用average
简化apply
一样?
答案 0 :(得分:0)
您正在传递一个程序,而不是最后一行中的数字。试试这个:
(define (innerFunction lst avg)
(if (null? lst)
0
(+ (* (- (car lst) avg)
(- (car lst) avg))
(innerFunction (cdr lst) avg)))) ; here was the error