- 在线时间
- 90 小时
- 最后登录
- 2018-12-27
- 注册时间
- 2016-4-22
- 听众数
- 17
- 收听数
- 0
- 能力
- 20 分
- 体力
- 23475 点
- 威望
- 2 点
- 阅读权限
- 200
- 积分
- 7546
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 126
- 主题
- 100
- 精华
- 2
- 分享
- 0
- 好友
- 6
升级   50.92% TA的每日心情 | 开心 2018-6-4 15:01 |
|---|
签到天数: 7 天 [LV.3]偶尔看看II
 群组: 2018年大象老师国赛优 群组: 高考备战 群组: 2018中小学数学建模冬 |
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
' H# ^( o y7 ^; Z, `' e解:由题意,设每个月的兔子总对数为f(n) ,(n = 1,2,3…)
' h" {0 Q- u* P0 y8 M+ S! R* l8 K7 `, h, P ^7 L. c
其中 f(1) = f(2) = 1 (对)
: A' l9 }5 _& T4 H( ]: u, W$ o8 c
! D+ l0 n4 D+ H' s% p6 ~: h" ^2 m, F1 @8 O1 @* d
" z3 g& _8 t. W( d% q0 v% N从第3个月起,每个月兔子的总数f(n) 可以分为:1 q% r# e2 L; Q# w( M3 n
( C) R. I# |5 ], Q第n新出生的兔子 f(newN)
9 l8 U- ~! J4 [0 ^) j, M& {第n月之前出生的兔子 f(beforeN)
, w/ h8 \' Z$ G8 j% `/ f3 E即 f(n) = f(newN) + f(beforeN)
: i: `5 o6 I) B( B
% i! W. \$ i( X+ D2 H: C9 g1 J= f(newN) + f(n-1)
5 F R; ] z" X4 k) J5 ?; K- r$ o- u; G
: b* G% g3 [) A4 [* j/ S; q$ C2 V3 r- ~6 o
在第n+1个月里,第n个月新出生的兔子f(newN)还不能繁殖,数量不变;& l5 |0 a6 ]/ V6 {+ L6 Q/ A1 H
_1 E, Q. w f( C5 T
而第n个月之前出生的兔子f(beforeN),则可以成倍繁殖,数量X2
8 Q( P& l* E( H% g2 e! u8 p
3 E: P6 h1 V. Y% |5 n5 q) C8 e则 f(n+1) = f(newN) + 2(beforeN)X21 s' e: [( c) A0 J
6 {' @2 ~6 v2 z4 Q/ d化简得 f(n+1) = f(n) + f(n-1)2 w y& f, }+ j0 ]
0 U0 x3 q# [& d5 }$ ^" e) C
即 f(n) = f(n-1) + f(n-2) (n=3,4,5,…)
0 a) G: C" t& @7 y( n7 M; V/ ^$ ^
) ^7 `& A0 t8 E) T4 t& H$ A1 R P3 t. S" }2 i2 l$ }8 ~! z
所以,每个月的兔子总对数可以归纳为一个分段函数:+ K5 b* B& |' u# A, J& i0 h# P
. N$ b2 \4 p w6 C) O) i* ^( l+ Lf(n) = 1 (n=1,2), S4 ?2 K+ j0 [5 C+ i# ]
2 q! t5 G3 z8 [8 T0 Rf(n) = f(n-1) + f(n-2) (n=3,4,5)
* j* p8 o) J( P( T8 ?' t; N6 s: T0 K. I: ?
接着编程为递归函数即可解决问题。8 K0 E% j- a3 v9 Q" c4 n+ j: V3 u
Q% f2 ~7 s- s
- Z" Z( U' Q% R% _& [% s* }# d7 s- x
" w7 }) `/ a3 g8 g/ k* D+ U
|
zan
|