首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

SICP学习札记 1.2.2 树形递归

2012-09-19 
SICP学习笔记 1.2.2 树形递归? 练习1.11? ?递归过程?(define (func n)(if ( n 3)n(+(* 1 (func (- n 1)))

SICP学习笔记 1.2.2 树形递归

? 练习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的整数

?

?

热点排行