方案编程标准偏差

时间:2016-12-12 23:47:11

标签: scheme

  

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一样?

1 个答案:

答案 0 :(得分:0)

您正在传递一个程序,而不是最后一行中的数字。试试这个:

(define (innerFunction lst avg)
  (if (null? lst)
      0
      (+  (* (- (car lst) avg)
             (- (car lst) avg))
          (innerFunction (cdr lst) avg)))) ; here was the error