SICP 习题 (1.43)解题总结

88 篇文章 30 订阅
74 篇文章 1 订阅

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



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值