參考斐波納契函數(shù)java實現(xiàn)的誤區(qū)--謹(jǐn)慎使用遞歸
最近在研究算法,遇到了斐波納契函數(shù),即1,2,3,5,8,13,21,34,55,89,...,通用式為:f(n)=f(n-1)+f(n-2).
一般的程序員想了想,擼起袖子,開工.
public static int fib(int n){
if(n<=2){
return 1;
}else{
return fib(n-1)+fib(n-2);
}
}
高手的程序員想了又想,慎重的寫下了:
public static int fibonacci(int n) {
if (n <= 2) {
return 1;
}
int result = 0;
int first = 0, second = 1;
for (int i = 1; i < n; i++) {
result = first + second;
first = second;
second = result;
}
return result;
}
前者使用的是遞歸,后者使用的是簡單的循環(huán).