- 在线时间
- 90 小时
- 最后登录
- 2018-12-27
- 注册时间
- 2016-4-22
- 听众数
- 17
- 收听数
- 0
- 能力
- 20 分
- 体力
- 23469 点
- 威望
- 2 点
- 阅读权限
- 200
- 积分
- 7534
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 126
- 主题
- 100
- 精华
- 1
- 分享
- 0
- 好友
- 6
升级   50.68% TA的每日心情 | 开心 2018-6-4 15:01 |
|---|
签到天数: 7 天 [LV.3]偶尔看看II
 群组: 2018年大象老师国赛优 群组: 高考备战 群组: 2018中小学数学建模冬 |
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?2 ^8 r' r9 Z0 ?$ J
解:由题意,设每个月的兔子总对数为f(n) ,(n = 1,2,3…)/ I# V' R8 R5 c4 ^ _7 s1 ^( O
' o$ Q9 F4 _7 {- @其中 f(1) = f(2) = 1 (对)
7 }1 h: I6 X. Y2 o# m+ Q* `3 r
( \$ a3 i3 ?* s/ s2 t9 Q/ Z% C+ e3 J* X. Q! V8 m
5 I$ H8 g: K$ f8 P, J1 H从第3个月起,每个月兔子的总数f(n) 可以分为:
/ U0 d: Y; l( B0 z, u7 U" V6 U$ z* F. C! d4 v! g( I
第n新出生的兔子 f(newN): w& C) V3 z7 s1 C$ T3 ^' g
第n月之前出生的兔子 f(beforeN)5 v; X( L- a5 q9 q F1 Y
即 f(n) = f(newN) + f(beforeN) k1 p9 y+ V2 [/ t$ f
. E3 ]. v9 c7 _* E2 O) b= f(newN) + f(n-1)
; u) o( c; @8 F( a# j1 E- z8 j1 J- o9 t, q- @+ n
8 F- [5 C3 d6 j; K6 ^" [/ A! i4 f/ |& |( q
在第n+1个月里,第n个月新出生的兔子f(newN)还不能繁殖,数量不变;, y2 {6 p* i+ Z4 P- O' r
' V3 Q+ V. Q) T" X
而第n个月之前出生的兔子f(beforeN),则可以成倍繁殖,数量X2
" v M1 S, M' e. g3 D8 f. K
5 ]6 U/ M* J4 [6 Q7 g) ^: ^* ]8 V则 f(n+1) = f(newN) + 2(beforeN)X2
! B w4 ?# ^6 T
$ @2 i* ~1 ~6 K. |+ P/ A化简得 f(n+1) = f(n) + f(n-1)& U; ?: E7 I! i2 P9 n
- u' g* |2 _: b8 \即 f(n) = f(n-1) + f(n-2) (n=3,4,5,…)# F; P/ K& Z3 j W% v: ?; K( k
* V2 B( ~& d: P m& o
7 F) Q, |0 l6 p- e# S- H( N V: v1 D0 _1 r( s5 m4 k I6 B
所以,每个月的兔子总对数可以归纳为一个分段函数:. H$ \: i) l# q' d9 d$ _6 U
* D- ~9 e5 l( [/ N: l) c0 f% U. E
f(n) = 1 (n=1,2): K9 K1 w# Y) l4 O6 m) L
) E# \! J/ }/ W( mf(n) = f(n-1) + f(n-2) (n=3,4,5)
& u F, ? t6 s& _9 }" E4 H4 T0 H; J9 C0 v l {! Q8 P9 ~
接着编程为递归函数即可解决问题。
& ^8 {5 d% O d7 J6 A6 W3 y+ ~0 f. E+ ?- |- w6 s
' ]' G* z G" M$ p! r, N+ a. t. p- n: U7 ~& B% M
2 J! _4 s3 ?( i; X3 E7 _ |
zan
|