数据结构——斐波拉契序列——小兔问题
2014-10-23 09:46
127 查看
一对幼兔一个月后长成小兔(每对兔子默认一公一母),再过一个月长成成兔并且生下一对小兔,以此类推,两年后有多少对兔子?
数列是由13世纪意大利斐波那契提出的,1,1,2,3,5,8,13,21……
这个数列从第三项开始,每一项都等于前两项之和
递推关系决定: F0=0,F1=1 ,Fn+2=Fn + Fn+1(n>=0)
通项公式为:[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5 【√5表示根号5】
main()
{
printf("输入月:");
int a;
scanf("%d",&a);
int chengtu = 0; //定义成兔
int xiaotu = 0; //定义小兔
int youtu = 0; //定义幼兔
int he = 0; //计算兔子的总和
for (int i = 1; i <= 1 * a;i++ )
{
if (i == 1)
{
chengtu = 0;
xiaotu = 0;
youtu = 1;
}
else
{
chengtu = chengtu + xiaotu; //这个月的成兔=上个月的成兔+上个月的小兔
xiaotu = youtu; //这个月的小兔=上个月的幼兔
youtu = chengtu; //这个月的幼兔=上个月的成兔
he = chengtu + xiaotu + youtu;
}
}
printf("幼兔: %d 、小兔: %d 、成兔: %d 、总和:%d \n",youtu, xiaotu, chengtu, he);
}
该数列有很多奇妙的属性 1. 随着数列项数的增加,前一项与后一项之比越逼近黄金分割0.6180339887……
2. 这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。
3. 从第二项开始,每个奇数项的平方都比前后两项之积多1,每个偶数项的平方都比前后两项之积少1 。如果任意挑两个数为起始,比如5、-2.4,然后两项两项地相加下去, 形成5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值
4. 如果你看到有这样一个题目:某人把一个8*8的方格切成四块,拼成一个5*13的长方形,故作惊讶地问你:为什么64=65?其实就是利用了菲波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到
http://www.cnblogs.com/hqjy/p/4027451.html
相关文章推荐
- 数据结构与问题求解(AS2描述)
- 星型结构数据一致性的问题(数据同步有可能冲突)
- 数据结构作业 迷宫问题 模拟 之基础的BFS DFS
- 数据结构问题集锦
- 数据结构之一(引论及最大子序列和问题)
- 关于DataList嵌套DataList的问题(重点在于处理某些特殊结构与数据绑定)
- 几个数据结构问题
- 数据结构问题---链表运算集合
- 数据结构问题---JOSEPHUS环解法
- 经典问题12:数据结构基础 ---堆
- 经典数据结构之栈的应用-迷宫问题
- 数据结构与算法实验题 11.1 堆箱子问题
- 【并查集】数据结构与算法实验题 11.3 培养箱分配问题
- 求助!!数据结构问题
- 数据结构问题---树的存储结构和运算
- 结构体数据对齐问题
- 【并查集】数据结构与算法实验题 11.2 病毒排查问题
- 数据结构问题---哈夫曼树与编码问题
- 经典问题12:数据结构基础 ---堆
- 总结:结构体嵌套调用内层结构体数据的问题