sicp 习题 1.10 ~ 1.17

1.10

(define (A x y)
(cond ((= y 0) 0)
((= x 0) (* 2 y))
((= y 1) 2)
(else (A (- x 1)
(A x (- y 1))))))

(define (f n) (A 0 n))
(define (fm n) (* 2 n))
(define (g n) (A 1 n))
(define (gm n)
(if (= n 1)
2
(* 2 (gm (- n 1)))))
(define (h n) (A 2 n))
(define (hm n)
(if (= n 1)
(g 1)
(g (hm (- n 1)))))
(define (k n) (A 3 n))
(h 4)


1.11
(define (f n)
(cond((< n 3) n)
((= n 3) 4)
((> n 3)(+ (f (- n 1))
(* 2 (f (- n 2)))
(* 3 (f (- n 3)))))))
(f 4)


1.12
(define (pascal x y)
(cond((= x 1) 1)
((= y 1) 1)
((= x y) 1)
((> y x) 1)
(else (+ (pascal (- x 1)(- y 1)) (pascal (- x 1) y)))))
(pascal 5 6)


1.16
b^n*(a*b^0) = b^(n/2)*(a*b^2) 是不变的状态
(define (f b n a)
(cond ((= n 0) a)
((= n 1) (* a b))
((= n 2) (* a b b))
((even? n) (f b (/ n 2) (* a b b)))
(else (* b (f b (- n 1) a)))))
(f 4 5 1)


1.17
(define (double a)
(* a 2))
(define (halve a)
(/ a 2))

(define (multiply a b)
(cond ((= b 0) 0)
((even? b) (multiply (double a) (halve b)))
(else (+ a (multiply a (- b 1))))))
(multiply 5 5)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值