算法——递推算法(顺推、逆推)
2011-07-25 16:05
141 查看
1. 顺推法 斐波拉契的“养兔问题” 公元1202年,一位意大利比萨的商人斐波拉契(Fibonacci,约1170-1250?)在他的《算盘全书》(这里的“算盘”指的是计算用沙盘)中提出过一个“养兔问题”。 某人买回一对小兔,一个月后小兔长成大兔。再过一个月,大兔生了一对小兔,以后,每对大兔每月都生一对小兔,小兔一个月后长成大兔。如此下去,问一年后此人共有多少对兔子? 表1 兔子的繁殖过程
设Matlab代码实现%存款问题
clear,close all
monthRate=0.0171/12;
months=49;
Fetch=1000;
Money=zeros(months);
Money(49)=Fetch;
for i=months:-1:2
Money(i-1)=Money(i)/(1+monthRate)+Fetch;
end
for i=months:-1:0
fprintf('第 %d 个月份的月末存款为: %f\n',i,Money(i+1));
end[/code]
运行结果
不考虑利息,则须存48000元,由于利息的存在只需要存入47363元。关键取决于利息的大小,利息不大的情况下,可直接存入48000元,利息生出的钱可作为奖赏。
月份 | 大兔数量 | 1月大的 小兔数量 | 2月大的 小兔数量 | 兔子总数 |
初始状态 | 0 | 1 | 0 | 1 |
1月 | 0 | 0 | 1 | 1 |
2月 | 1 | 1 | 0 | 2 |
3月 | 1 | 1 | 1 | 3 |
4月 | 2 | 2 | 1 | 5 |
5月 | 3 | 3 | 2 | 8 |
6月 | 5 | 5 | 3 | 13 |
7月 | 8 | 8 | 5 | 21 |
8月 | 13 | 13 | 8 | 34 |
9月 | 21 | 21 | 13 | 55 |
10月 | 34 | 34 | 21 | 89 |
11月 | 55 | 55 | 34 | 144 |
12月 | 89 | 89 | 55 | 233 |
clear,close all
monthRate=0.0171/12;
months=49;
Fetch=1000;
Money=zeros(months);
Money(49)=Fetch;
for i=months:-1:2
Money(i-1)=Money(i)/(1+monthRate)+Fetch;
end
for i=months:-1:0
fprintf('第 %d 个月份的月末存款为: %f\n',i,Money(i+1));
end[/code]
运行结果
不考虑利息,则须存48000元,由于利息的存在只需要存入47363元。关键取决于利息的大小,利息不大的情况下,可直接存入48000元,利息生出的钱可作为奖赏。
相关文章推荐
- 算法竞赛宝典 递推算法 过河卒
- 算法之递推算法(顺推)
- 常用算法思想--递推算法
- 算法——递推算法
- 算法学习笔记之递推算法
- 基本算法思想之递推算法思想(C++语言描述)
- 基本算法思想之递推算法思想(C++语言描述)
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第三章 递推算法
- 数据结构与算法之递推算法 C++与PHP实现
- 算法思想篇(2)————递推算法
- 算法竞赛宝典 递推算法 极值问题
- 算法竞赛宝典 递推算法 平面分割
- C# 算法的逆推,汉字与数字的互转
- 算法竞赛宝典 递推算法 曲线分割
- C++基本算法思想之递推算法思想
- java 常用算法学习记录(递推算法)
- 数据结构与算法之递推算法 C++与PHP实现
- 算法竞赛宝典 递推算法 密文传送
- 使用STL中的泛型算法sort
- ZZ一些简单算法