📅  最后修改于: 2023-12-03 15:13:39.256000             🧑  作者: Mango
在 Java 中,我们可以使用 BigInteger
类实现大整数斐波那契数列。在本文中,我们将使用递归和循环两种方式来实现斐波那契数列。
递归是最简单也是最直接的方式来实现斐波那契数列。我们只需要定义一个递归函数来计算斐波那契数列即可。
import java.math.BigInteger;
public class Fibonacci {
public static BigInteger fib(int n) {
if (n == 0) {
return BigInteger.ZERO;
} else if (n == 1) {
return BigInteger.ONE;
} else {
return fib(n - 1).add(fib(n - 2));
}
}
public static void main(String[] args) {
int n = 100;
System.out.println("斐波那契数列第 " + n + " 项的值为:" + fib(n));
}
}
在上面的代码中,我们定义了一个 fib
函数,它返回斐波那契数列的第 n 项的值。如果 n 等于 0,函数返回 0;如果 n 等于 1,函数返回 1;否则,函数递归调用 fib(n - 1)
和 fib(n - 2)
,并返回它们的和。
在 main
函数中,我们指定 n 的值为 100,然后输出斐波那契数列的第 100 项的值。
尽管递归实现是最简单的方式,但它的效率并不高,因为在计算斐波那契数列的第 n 项时,它需要递归调用 fib(n - 1)
和 fib(n - 2)
两次。为了提高效率,我们可以使用循环来实现斐波那契数列。
import java.math.BigInteger;
public class Fibonacci {
public static BigInteger fib(int n) {
if (n == 0) {
return BigInteger.ZERO;
} else if (n == 1) {
return BigInteger.ONE;
} else {
BigInteger a = BigInteger.ZERO;
BigInteger b = BigInteger.ONE;
BigInteger c = BigInteger.ZERO;
for (int i = 2; i <= n; i++) {
c = a.add(b);
a = b;
b = c;
}
return c;
}
}
public static void main(String[] args) {
int n = 100;
System.out.println("斐波那契数列第 " + n + " 项的值为:" + fib(n));
}
}
在上面的代码中,我们定义了一个 fib
函数,它返回斐波那契数列的第 n 项的值。如果 n 等于 0,函数返回 0;如果 n 等于 1,函数返回 1;否则,我们使用三个 BigInteger
变量 a、b 和 c 来实现循环方式计算斐波那契数列。在循环中,每一次计算都是将 a 和 b 的值相加,然后将结果赋给 c。接着,更新 a 的值为 b,b 的值为 c。最后,函数返回 c 的值。
在 main
函数中,我们指定 n 的值为 100,然后输出斐波那契数列的第 100 项的值。
这就是 Java 中实现大整数斐波那契数列的两种方式。如果您需要计算更大的斐波那契数列,只要将 n 的值更改为您需要的值即可。