【剑指offer-Java版】09斐波那契数列

来源:互联网 发布:mysql 5.7.17.msi下载 编辑:程序博客网 时间:2024/06/12 21:23

斐波那契数:比较简单,但是重点是讲效率的求解出来
简单的使用两个临时变量大大减少了重复计算

对于非常大的数如果使用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);    }    }
0 0