斐波那契数列
来源:互联网 发布:矢量数据特点 编辑:程序博客网 时间:2024/06/02 03:25
斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。特别指出:0不是第一项,而是第零项。
递推公式
斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:
F(0) = F(1) = 1;F(n) = F(n-1) + F(n-2);
显然这是一个线性递推数列。
代码实现:
#include <iostream>using namespace std;long long Fibonacci(int n){ return n<2?n:Fibonaccil(n-1)+Fibonaccil(n-2);};int main(){ long long ret = Fibonaccil(10); cout<<ret<<endl; system("pause"); return 0;}
时间复杂度:O(2^N)
空间复杂度:O(N)
上述方法虽然能实现斐波那契数列的计算,但是计算过程会出现多次重复,导致运算速率大大降低。
斐波那契数列的优化1:
#include <iostream>using namespace std;long long Fibonacci(int n){ long long *fibArray = new long long[n+1]; fibArray[0] = 0; fibArray[1] = 1; for(int i=2; i<=n; ++i) { fibArray[i] = fibArray[i-1] + fibArray[i-2]; } return fibArray;};int main(){ long long ret = Fibonacci(10); cout<<ret<<endl; system("pause"); return 0;}
时间复杂度:O(N)
减少了时间上的浪费
斐波那契数列的优化2:
#include <iostream>using namespace std;long long Fibonacci(int n){ long long fibArray[3] = {0, 1, n}; for(int i=2; i<=n; ++i) { fibArray[2] = fibArray[1] + fibArray[0]; fibArray[0] = fibArray [1]; fibArray[1] = fibArray[2]; } return fibArray[2];};int main(){ long long ret = Fibonacci(10); cout<<ret<<endl; system("pause"); return 0;}
时间复杂度:O(N)
空间复杂度:O(1)
既减少了时间上的浪费,又减少了空间上的浪费
斐波那契数列的递归优化:
#include <iostream>using namespace std;long long Fibonacci(int first, int second, int n){ if(n == 3) { return first + second; } return Fibonacci(second, first+second, n-1);};int main(){ long long ret = Fibonacci(10); cout<<ret<<endl; system("pause"); return 0;}
1 0
- 斐波那契数列数列计算
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- java程序设计初识
- JS img读取本地图片
- Your configuration does not allow connection to http://packagist.org
- 网络传输工具cURL和libcurl
- Android下不同CPU类型:armeabi和armeabi-v7a以及mips和x86
- 斐波那契数列
- DevExpress ChartControl控件实现图表
- Hive
- Android Studio如何打包签名
- Springmvc 配置thymeleaf 和jsp 双模板引擎
- 委托
- Mac 配置Spark环境scala+python版本(Spark1.6.0)
- HighlightingSystem插件使用(边缘发光)
- 富文本