1. 程式人生 > >SICP 習題 (1.43)解題總結

SICP 習題 (1.43)解題總結

ews define 通過 嵌套 總結 com plain 例如 pan

SICP 習題 1.43 是前面兩道題的延續,習題要求我們定義一個過程(repeat f n) 。當中f是一個單參數過程。題目要求我們通過repeat過程將過程f調用n次,註意是嵌套調用n次,不是連續調用n次。就是說結果應該是(f ( f ( … (f x) …)))。而不是(begin (f x) (f x) (f x) … (f x))。


題目還提醒我們使用習題1.42所定義的compose方法。


細致想想的話這一工作能夠通過遞歸調用完畢,就是(repeat f n) 等於 (compose f (repeat f (- n 1))。就是說n次嵌套調用f能夠轉換成(f (<n-1次嵌套調用f))。


理解了這一點後就比較easy了,控制好遞歸調用的結束就能夠了。代碼例如以下:


(define (repeat f n)
  (define (repeat-inner f cur-n)
    (if (< cur-n n)
	 (compose f (repeat-inner f (+ cur-n 1)))
	f ))
  (repeat-inner f 1))



SICP 習題 (1.43)解題總結