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))
时间: 2024-10-24 11:54:31