sicp-ex-1.44



<< Previous exercise (1.43) | sicp-solutions | Next exercise (1.45) >>


 (define dx 0.00001) 
  
 (define (smooth f) 
   (lambda (x) 
     (/ (+ (f (- x dx)) 
           (f x) 
           (f (+ x dx))) 
        3))) 
  
 (define (n-fold-smooth f n) 
   ((repeated smooth n) f)) 

The input needs only the function and the number of smoothing procedure, so it should not include x.


Be aware below is WRONG:

 (define (n-fold-smooth f n) 
   (repeated (smooth f) n)) 

This is illustrated below for n=2

 ;; goal: n=2 -> "smooth the smoothed function" 
 ((repeated smooth 2) f) ;; -> smooth(smooth(f)) [Correct] 
 (repeated (smooth f) 2) ;; -> smooth(f(smooth(f)) [Incorrect]