- 在线时间
- 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个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
% D& O" W+ O- l, w解:由题意,设每个月的兔子总对数为f(n) ,(n = 1,2,3…)
% @& X. p- s s% |0 w6 t- {
" G4 L! G' U& b. O; h% r/ r% y其中 f(1) = f(2) = 1 (对)) s, K) O1 a' c- O4 D/ c7 X
: x7 \5 s' ^( L2 ]
( x# M1 A% K4 b( h# K* W6 U0 X9 w! |6 D: s
从第3个月起,每个月兔子的总数f(n) 可以分为:: H/ Q' n5 A! E& u6 b- ]- ?
) D ^0 p% R2 j. q) O7 f! ~. n第n新出生的兔子 f(newN)- T2 o/ F2 ]8 M5 J5 r& O+ A
第n月之前出生的兔子 f(beforeN)
# `8 F5 R/ ]8 U* ?+ y7 V4 I即 f(n) = f(newN) + f(beforeN)9 q/ {+ O2 N- q) t
- n: s8 r9 m* W8 d' u= f(newN) + f(n-1)
9 P9 c8 L% Z1 @* q6 e2 W& M8 l5 {# n, p
; f( _- p7 z5 q9 ?+ \- D% z9 T
! w P# ~, M6 {4 V# l在第n+1个月里,第n个月新出生的兔子f(newN)还不能繁殖,数量不变;
g* |" b1 x0 a$ c/ B) n \" [9 u) l& s5 v+ I
而第n个月之前出生的兔子f(beforeN),则可以成倍繁殖,数量X2
- G( L; g& M' J* ]0 T; @" q9 b( a* O6 _ P5 \; y
则 f(n+1) = f(newN) + 2(beforeN)X2
x( X, [; I/ h: \$ H
8 u! |+ T* J( z化简得 f(n+1) = f(n) + f(n-1)
" K8 j. i& p4 ?: D+ x( ?' ~1 Z0 u$ C, R0 N1 _. X' D% n! V* c
即 f(n) = f(n-1) + f(n-2) (n=3,4,5,…)( F8 J. ~* Y% b. F0 y3 z: M
; B0 {6 R" G( {4 v3 m! K! G( N' B6 G5 G1 e) m
6 S0 a# h1 v' i" b6 J
所以,每个月的兔子总对数可以归纳为一个分段函数:
5 L. X$ S2 ~/ ?% ~/ u* r" J2 ]
# N6 G# B- d' p: o) W- t2 yf(n) = 1 (n=1,2)
7 p, o. L$ X+ O: x% T
+ {5 r; \# Z* k! d4 Q f, b! w0 sf(n) = f(n-1) + f(n-2) (n=3,4,5)
4 L' B2 o( I! J; n! [, G* z
) h$ f2 x/ Z/ @3 [接着编程为递归函数即可解决问题。
- I* A% ~2 L. d M: p' L6 b2 l+ {+ s- ~7 d% \+ q% T
* h/ U" ^- Q2 M! Y) i: y3 |) z' a9 C9 B, N# n1 h. l1 ]9 A+ S0 L
8 D* i9 X! w$ Y& f6 e8 h# ^
|
zan
|