1.11
递归版本
1 (define (f n) (cond ((< n 3) n) 2 (else (+ (f (- n 1)) 3 (* (f (- n 2)) 2) 4 (* (f (- n 3)) 2))))) 5 6 迭代版本 7 8 (define (f n) 9 (if (< n 3) 10 3 11 (xf n 1 2 3 3))) 12 13 14 (define (xf n a b c d) 15 (cond ((= n d) (max a b c)) 16 (else (cond ((= 0 (remainder d 3)) (xf n (+ (* 3 a) 17 (* 2 b) 18 c) b c (+ 1 d))) 19 ((= 1 (remainder d 3)) (xf n a (+ (* 3 b) 20 (* 2 c) 21 a) c (+ 1 d))) 22 ((= 2 (remainder d 3)) (xf n a b (+ (* 3 c) 23 (* 2 a) 24 b) (+ 1 d)))))))
1.12
1 (define (pascal h n) 2 (cond ((= h 1) 1) 3 ((= n 1) 1) 4 ((= h n) 1) 5 (else (+ (pascal (- h 1) n) 6 (pascal (- h 1) (- n 1))))))
1.13
证明题看着都烦...
作为补偿我来实现一下1.12的迭代版本 --------> 失败
经过百度发现了一个公式 -------> (row col)=row!/(col!⋅(row−col)!) -----> 有这个公式的话那实现起来很简单,就不演示了...