sicp 1.14

如下过程:

 

(define (count-change amount)
  (cc amount 5))

(define (cc amount kinds-of-coins)
  (cond ((= amount 0) 1)
		((or (< amount 0) (= kinds-of-coins 0)) 0)
		(else (+ (cc amount (- kinds-of-coins 1))
				 (cc (- amount (first-denomination kinds-of-coins)) kinds-of-coins)))))

(define (first-denomination kinds-of-coins)
  (cond ((= kinds-of-coins 1) 1)
		((= kinds-of-coins 2) 5)
		((= kinds-of-coins 3) 10)
		((= kinds-of-coins 4) 25)
		((= kinds-of-coins 5) 50)))

 

(count-change 11)计算过程:

(cc 11 5) = (cc 11 4) + (cc -39 5)

                = (cc 11 3) + (cc -14 4)

                = (cc 11 2) + (cc 1 3)

                = (cc 11 1) + (cc 6 2) + (cc 1 2) + (cc -9 3)

                = (cc 11 0) + (cc 10 1) + (cc 6 1) + (cc 1 1) + (cc 1 1) + (cc -4 2)

                = (cc 10 0) + (cc 9 1) + (cc 6 0) + (cc 5 1) + (cc 1 0) + (cc 0 1) + (cc 1 0) + (cc 0 1)

                = (cc 9 0) + (cc 8 1) + (cc 5 0) + (cc 4 1) + 1 + 1

                = (cc 8 0) + (cc 7 1) + (cc 4 0) + (cc 3 1) + 1 + 1

                = ...

                = 1 + 1 + 1 + 1

                = 4

 

可以看出,时间空间都是线性增长。

你可能感兴趣的:(SICP)