练习1.11
递归过程
(define (func n) (if (< n 3) n (+ (* 1 (func (- n 1))) (* 2 (func (- n 2))) (* 3 (func (- n 3))))))
迭代过程
(define (func n)
(fun-iter 0 1 2 n))
(define (fun-iter a b c count)
(if (= count 0)
a
(fun-iter b c (+ (* 1 c) (* 2 b) (* 3 a)) (- count 1))))
练习1.12
(define (pasca n i) (cond ((= i 1) 1) ((= i (+ n 1)) 1) (else (+ (pasca (- n 1) (- i 1)) (pasca (- n 1) i)))))
练习1.13
已知:f(n+1) = f(n) + f(n-1) (1)
设存在f(n+1) + x*f(n) = y*[f(n) + x*f(n-1)] (2),则有
f(n+1) = (y-x)*f(n) + x*y*f(n-1)
根据(1),则有y-x=1, x*y=1,则有x*(x+1)=1
此方程有解
x=(√5-1)/2、y=(√5+1)/2
则存在等比数列f'(n),其首项为f(2) + [(√5-1)/2]*f(1) = (√5+1)/2,公比为(√5+1)/2
则f'(n) = [(√5+1)/2]^n,即
f(n+1) + [(√5-1)/2]*f(n) = [(√5+1)/2]^n
f(n+1) = [(1-√5)/2]*f(n) + [(√5+1)/2]^n (3)
设存在f(n+1) + x*[(√5+1)/2]^(n+1) = [(1-√5)/2]*[f(n) + x*[(√5+1)/2]^n] (4),则有
f(n+1) = [(1-√5)/2]*f(n) + [(√5+1)/2]^n*(-√5*x)
根据(2),则有
-√5*x=1,则x=-√5/5
代入(4),得
f(n+1) - (√5/5)*[(√5+1)/2]^(n+1) = [(1-√5)/2]*[f(n) - (√5/5)*[(√5+1)/2]^n]
则存在等比数列f''(n),其首项为f(1)- (√5/5)*[(√5+1)/2] = (5-√5)/10,公比为(1-√5)/2
则f''(n) = [(5-√5)/10]*[(1-√5)/2]^(n-1),则
f(n)- (√5/5)*[(√5+1)/2]^n = -(√5/5)*[(1-√5)/2]^n
f(n) = (√5/5)*[(√5+1)/2]^n - (√5/5)*[(1-√5)/2]^n
若有φ=(√5+1)/2、ψ=(1-√5)/2,则有
f(n)=(φ^n-ψ^n)/√5
所以 φ^n/√5 = f(n) + ψ^n/√5
而ψ=(1-√5)/2,-1 < ψ < 0,则-1 < ψ^n < 1,则-√5/5 < ψ^n/√5 < √5/5
又√5/5 < 1,所以f(n)是最接近φ^n/√5的整数