c++随笔
在网上看了些东西比较有启发。
比如对于斐波拉契数列的实现,我以前很喜欢使用二分递归法,比如
int fib(int n){
return (n<2)?n:fib(n-1)+fib(n-2);
}
然而,考虑一下他的时间复杂度T(n)=T(n-1)+T(n-2)+1,可以计算出T(n)=O(2^n).这显然不是个有效算法。
而使用迭代法:
int fib(int n){
int f,g;
f=0;g=1;
while(n-->0){
g=g+f;
f=g-f;
}
return f;
}
时间复杂度只有O(n),十分高效。