【发布时间】:2016-12-12 23:47:11
【问题描述】:
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 来实现这一点,就像我如何使用apply 简化average 一样?
【问题讨论】:
-
"innerFunction" == "sum-devs-squared" 或类似的东西。简单的经验法则:给你的函数起有意义的名字,但是用简短的缩写来命名你的变量(即使是一个字母,意图很清楚)。 --- 是的,您的
innerFunction可以编码为对map的调用。
标签: scheme