- 在线时间
- 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个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
$ g5 P( S/ G) L; T( n1 [解:由题意,设每个月的兔子总对数为f(n) ,(n = 1,2,3…)" g( z+ K- u8 o* A" q% S
M5 s% @* S2 D3 S7 r0 k2 D, N其中 f(1) = f(2) = 1 (对). a8 @3 c) G0 h) P/ w: T7 s
" c+ y7 t' v6 b1 z. ^/ h
: C8 {1 Z, S- }6 }3 a+ `& _& Q5 ]; j( b% U4 o7 }) A0 y
从第3个月起,每个月兔子的总数f(n) 可以分为:
' }5 _: B- `3 H+ C, q. }' l- Q
4 i% P! F: a* g9 J# @" @/ f第n新出生的兔子 f(newN)
+ O+ W# f+ `; E6 O第n月之前出生的兔子 f(beforeN)5 m& G1 e4 K3 x- ]7 s
即 f(n) = f(newN) + f(beforeN)
: ~) B; e- f7 V7 u x
4 l5 c/ h9 g8 u* Z m= f(newN) + f(n-1)* |6 ?2 \. f: J# [5 u7 a
p2 R: |$ T5 M$ `) r a; o1 S& f z9 b" d! K
' c" m2 X$ U* I6 z! e! J. z$ j1 j在第n+1个月里,第n个月新出生的兔子f(newN)还不能繁殖,数量不变;( j' ?6 c7 K* m2 Z
' e- M- s% q6 P1 {* R; j; S, ^而第n个月之前出生的兔子f(beforeN),则可以成倍繁殖,数量X2% V2 m. x& _0 y+ j6 N; |2 r
$ z2 \/ l; K4 v8 O6 U
则 f(n+1) = f(newN) + 2(beforeN)X25 Z1 ? t, f- |& e! k# Z
9 Z, g* a1 }0 ?- j1 v* R化简得 f(n+1) = f(n) + f(n-1)/ Z/ \ X/ J$ O) ^
9 T4 \, m0 w$ E1 [
即 f(n) = f(n-1) + f(n-2) (n=3,4,5,…)
H. K0 J. J! q8 T% V0 Z% T" T/ e& w, o3 @' }
$ Y. f- h/ e$ P* b/ ]% o. A# _( `* v. d& F3 @
所以,每个月的兔子总对数可以归纳为一个分段函数:( j0 I# m4 d3 U g( T4 P
4 `9 `! n, o2 h9 @* B D0 c- Y5 @3 J" M
f(n) = 1 (n=1,2)% p! }, P6 Z' n9 n) d
$ E, o- V+ C/ a8 jf(n) = f(n-1) + f(n-2) (n=3,4,5)
$ a$ r# v) T6 c- r9 p
! v9 M& }. ~) M- @. r X接着编程为递归函数即可解决问题。
J0 E! G$ V1 v% B+ S# t8 w1 I2 [4 t, }9 |1 _
( g. t9 p. y8 C8 B1 E9 [) L' ]. z8 A8 d, q
# _8 J; I# C$ |! P& J |
zan
|