首页 > 代码库 > SICP 习题 (1.44)解题总结

SICP 习题 (1.44)解题总结

SICP 习题1.44 要求我们实现一个平滑函数的过程,和以往一样,如果你太在意平滑函数的数学定义你就输了。简单的办法就是直奔平滑函数的要求,其实就是给我们一个不清楚细节的函数f,要求我们返回一个过程专门计算(f (+ x dx)) , (f x) , (f (- x dx))的平均值。其中dx是事先定义好的一个很小的数,比如0.001。


这就比较简单了,直接实现如下:

(define (smooth f)
  (lambda (x) (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3)))


如果希望对一个过程进行多次平滑处理,可以结合之前的repeat过程多次调用smooth过程,代码如下:

(define (n-smooth f n)
  ((repeat smooth n) f))


SICP 习题 (1.44)解题总结