关于斐波那契数列的改进
来源:互联网 发布:plc编码器编程 编辑:程序博客网 时间:2024/05/29 03:21
斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、……这个数列从第三项开始,每一项都等于前两项之和。
斐波那契数列最简单的实现就是递归:#include<stdio.h>
int main(){
int n;
int fun(int);
scanf("%d",&n);
printf("%d",fun(n));
return 0;
}
int fun(int n){
if(n==1||n==2)
return 1;
else
return (fun(n-1)%10007)+(fun(n-2)%10007);
}递归法虽然简单,“运行时间很长!对内存消耗太大了。时间复杂度为o(nlogn)
算法改进一:将递归的中间值保存起来;优点:时间复杂度降到了o(n),但是增加了内存的消耗。
算法改进二:斐波那契数列一个很有意思的实际问题是兔子问题:一年内一对兔子可繁殖成多少对,便筑了一道围墙把一对兔子关在里面。已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后.第三个月开始生小兔子假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?矩阵法, 算法复杂度为O(log n)由于F1=F1, F2=F0+F1,因此有, 类似地,因此,故为求得Fn,只需要对这个二次矩阵X进行n次方求解即可。这个方法虽然时间复杂度降低为O(logn),但是一般不用。算法改进三:公式法:时间复杂度降为O(1)F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
很显然第一个月是一对兔子,第二个月因为不能生育还是一对兔子,第三个月就是两对了,是前两个月的和;第四个月是三对,是第二、三个月的和。依此类推...
0 0
- 关于斐波那契数列的改进
- 斐波那契数列改进算法
- 斐波那契数列的实现(改进)
- 《Java_斐波那契数列实现方法_改进》
- [Java实现]Filbonacci斐波那契数列递归带来的问题和改进
- 斐波那契数列的时间复杂度详释与改进方法
- 关于斐波那契数列的算法比较
- 关于 斐波那契数列 的引申
- 关于斐波那契数列的复杂度最低算法
- 关于斐波那契数列的几种解法
- 关于斐波那契数列的优化
- 关于斐波那契数列的性质及其应用
- 关于斐波那契数列的一些总结
- python 关于斐波那契数列的递归思路
- 关于斐波那契数列的一些例题
- 关于斐波那契数列的Java编程
- 关于斐波那契数列递归
- 关于斐波那契数列小结
- ios弹菊花和推荐
- A B Codeforces Round #285 (Div. 2)
- [LeetCode] Fraction to Recurring Decimal
- Oracle 精萃
- LRU 算法
- 关于斐波那契数列的改进
- 快速排序&&归并排序
- 【DEMO】用cocos2d-x3.x写的第一个cocosDemo
- poj 2081 简单递推
- Hibaernate4+SpringMVC+Junit4+Log4j环境搭建
- ZvJR3雪靴台灣 Lih6 mwC
- 约瑟夫环的问题
- 在Java中使用Lua脚本语言
- box2d错误 Assertion failed: (area > 1.19209290e-7F), function ComputeCentroid