BigInteger需要用equals判断值,用==判断的是内存地址,没有退出边界,相当于死循环了
参考代码
public static BigInteger fib(BigInteger n) {
// 递归写法
if (n.equals(BigInteger.valueOf(0))) //初始化
return BigInteger.valueOf(0);
if (n.equals(BigInteger.valueOf(1)) || n.equals(BigInteger.valueOf(2)))
return BigInteger.valueOf(1);
return fib(n.subtract(BigInteger.valueOf(1))).add(fib(n.subtract(BigInteger.valueOf(2))));
}