软件的运行快慢直接关系到我们的用户体验,程序的优化无疑对我们来说是非常重要的,我们就冲简单的开始!
例:斐波纳挈数列
常规写法
public long computer(int n){
if(n > 1){
return conputer(n-2)+computer(n-1);
return n;
}
}
优化一:
public long computer(int n){
if(n == 1 || n == 0){
return n;
}else{
return conputer(n-2)+computer(n-1);
}
}
优化二:尾递归,但是递归算法可以导致堆栈溢出让应用奔溃,因此尽量用迭代实现
public static long computer(int n){
if (n > 1) {
long result = 1;
do {
result = computer(n-2);
n--;
} while (n > 1);
return result;
}
return n;
}
优化三:迭代实现
public static long computer(int n){
if (n > 1) {
long a = 0,b = 1;
do {
long tmp = b;
b+=a;
a=tmp;
} while (--n > 1);
return b;
}
return n;
}
优化四:
public static long computer(int n){
if (n > 1) {
long a,b = 1;
n --;
a = n & 1;
n /= 2;
while(n-- > 0){
a += b;
b += a;
}
return b;
}
return n;
}