零加一中:Fibonacci问题详解 |
送交者: 侠行天涯 2011年03月14日17:40:52 于 [灵机一动] 发送悄悄话 |
有一对刚生的小兔子,两个月后每月生一对小兔子。所生的小兔子也是两个月后开始每月生一对小兔子。问N个月后有几对兔子? F(0) = 1, F(1) = 1, F(2) =2, ... 先推导F(n)的递推公式 F(n) = F(n-1) + F(n-2) , n > 1 我们把F(n-2)分为两部分a和b,a为当月出生的,其他为b。a要到第n月才能生育,b下月都可生育。 F(n-2) = a + b, F(n-1) =a + 2b, F(n) = 2a + 3b 我们有F(n) = F(n-1) + F(n-2) , n > 1。 f(x) = Sum(F(n)xn) n=0,1,2,... = 1 + x + Sum{F(n-1))xn + F(n-2))xn }, n=2,3,4,... = 1 + x + x{f(x) - 1} + x2f(x) 经整理得 f(x){1 - x - x2} = 1 f(x) =1/ {1 - x - x2} = -1 / {(x + x-)(x + x+)} = 1 /{(1+ x/x-)(1+ x/x+)} 这儿 x+ = (1 + SQRT(5))/2 , x- = (1 - SQRT(5))/2 f(x) = -( x-/ SQRT(5))/(1+ x/ x+) + (x+/ SQRT(5) )(1+ x/ x-) 两项均展开后xn的系数即F(n)。第一项的系数正负交替,第二项恒正。当n很大时,第一项可忽略不计。 有些书定义F(0) = 1, F(1) = 2,细节可能会有所不同。 |
|
|
|
实用资讯 | |