斐波那契数:比较简单,但是重点是讲效率的求解出来
简单的使用两个临时变量大大减少了重复计算
对于非常大的数如果使用long 来表示,那么 第100项左右就会发生溢出
换了BigInteger,理论上是可以表示任意大的数
http://blog.csdn.net/w00w12l/article/details/7290750
public class _Q09 {
public BigInteger Fibonacci(int n){
BigInteger fibOne = BigInteger.ZERO;
BigInteger fibTwo = BigInteger.ONE;
if(n == 0) return fibOne;
if(n == 1) return fibTwo;
BigInteger fibN = BigInteger.ZERO;
for(int i=2; i<=n; i++){ // 直接按公式从2到n
fibN = fibOne.add(fibTwo);
fibOne = fibTwo;
fibTwo = fibN;
}
return fibN;
}
}
测试代码:
public class _Q09Test extends TestCase {
_Q09 fib = new _Q09();
public void testMinInReverse() throws Exception{
BigInteger result = fib.Fibonacci(5000);
System.out.println(result);
}
}