第一章总结——斐波那契数列算法
斐波那契数列算法
核心: F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2) (n>=2)
//递归算法
//递归实现
long long fib(int n){
if(n == 0) return 0;
if(n == 1) return 1;
return fib(n-1) + fib(n-2);
}
递归算法缺点:当n很大时,计算会十分冗杂。例如计算fib(5)=fib(4)+fib(3),而fib(4)和fib(3)又是一个独立的计算过程,效率十分低。
算法优化(用循环代替递归)
//优化1
long long fib(int n){
long long f[1000];
f[0]=0;f[1]=1;
for(int i=2;i<=n;i++){
f[i]=f[i-1]+f[i-2];
}
return f[n];
}
//优化2
long long fib(int n){
long long f[3]={0,1,0};
for(int i=2;i<=n;i++){
f[2]=f[0]+f[1];
f[0]=f[1];
f[1]=f[2];
}
return f[2];
}
斐波那契数列的最优算法(O(logN)):https://blog.51cto.com/helloleex/1769253