为什么要学习算法?
在有限时间和内存下,编写程序正确地或有效地解决问题。
计算Fibonacci数列的第n项
算法一:递归函数
int F(int n){
if(n<=2) return 1;
return F(n-1)+F(n-2);
}
算法二:递推循环
int F(int n){
if(n<=2) return 1;
int f1=1, f2=1;
for(int i=3;i<=n;i++){
int temp = f1+f2;
f1=f2;
f2=temp;
}
return f2;
}
递归函数计算100项时,会无法完成计算,递推可以很快计算出100项。
递归算法的时间复杂度为O(1.618^n),递推函数的时间复杂度为O(n)。
算法三:矩阵快速幂算法
数列递推公式的矩阵形式

最低0.47元/天 解锁文章
1205

被折叠的 条评论
为什么被折叠?



