关于为什么我用java写的小程序来计算从1加到n,输入n的值太大会得出负数 的问题
n=100时数目巨大,因此保存数字用的类型为BigInteger
代码如下
import java。math。BigInteger;
public class Fibonacci {
static BigInteger[] fib;
// 获得斐波那契数列
public static void getFibonacci(int max) {
fib = new BigInteger[max];
fib[0] = fib[1] = BigInteger。
ONE;
for (int i = 2; i
fib[i] = fib[i – 1]。add(fib[i – 2]);
}
}
// 获得斐波那契数列位置为index的值
public static BigInteger fib(int index) {
return fib[index – 1];
}
public static void main(String[] args) {
getFibonacci(100);// 生成长度为100的斐波那契数列
BigInteger gcd = fib(100)。
gcd(fib(99));// 求最大公约数进行约分
System。err。println(“fib(99)/fib(100)=” fib(99)。divide(gcd) “/”
fib(100)。
divide(gcd));
}
}。