/**
* 递归的解法,效率低。可以画个树状图,分析流程 * n * */ public static long fibonacci(int n) { if (n <= 0) { return 0; } if (n == 1) { return 1; } return fibonacci(n - 1) + fibonacci(n - 2);}
/** * 用循环实现,减少重复项,极大提高时间效率 * n * */ public static long fibonacci2(int n) { int result[]={0,1}; if(n<2){ return result[n]; } long fibNMinusOne=1; long fibNMinusTwo=0; long fibN=0; for(int i=2;i<=n;++i){ fibN=fibNMinusOne+fibNMinusTwo; fibNMinusTwo=fibNMinusOne; fibNMinusOne=fibN; } return fibN;
}
/** * 时间度为lg(n)但是不够实用的算法 * args */