码迷,mamicode.com
首页 > 其他好文 > 详细

SICP 习题 (1.43)解题总结

时间:2014-07-01 09:13:03      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:style   blog   使用   2014   os   工作   

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))。


理解了这一点后就比较容易了,控制好递归调用的结束就可以了,代码如下:


(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)解题总结,布布扣,bubuko.com

SICP 习题 (1.43)解题总结

标签:style   blog   使用   2014   os   工作   

原文地址:http://blog.csdn.net/keyboardota/article/details/34807667

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!