在不使用递归的情况下使用 BigInteger 获取斐波那契数列
Obtaining Fibonacci Series with BigInteger without using Recursion
大家好这里的所有初学者程序员,在没有递归的情况下很难计算斐波那契数列。
我的主要问题是使用 BigInteger
。这是我的代码:
import java.math.BigInteger;
public class Fibonacci
{
public void fibonacci(int n)
{
int[] arr = new int[n + 1];
arr[0] = 0;
arr[1] = 1;
arr[2] = 1;
for(int i = 3; i <= n; i++)
{
arr[i] = arr[i-1] + arr[i-2];
}
System.out.println(arr[n]);
}
}
这是我的 man 方法测试器
public class TestFibonacci
{
public static void main(String[] args)
{
Fibonacci f1 = new Fibonacci();
f1.fibonacci(3);
f1.fibonacci(10);
f1.fibonacci(20);
f1.fibonacci(30);
f1.fibonacci(40);
f1.fibonacci(50);
f1.fibonacci(60);
f1.fibonacci(100);
}
}
在我开始得到负数后,我当前的输出最多可达 40,有什么提示吗??
2
55
6765
832040
102334155
-298632863
1820529360
-980107325
当然你最好使用 BigInteger
,因为没有你会得到 integer overflow
(link) :
public void fibonacci(int n) {
BigInteger[] arr = new BigInteger[n + 1];
arr[0] = BigInteger.ZERO;
arr[1] = BigInteger.ONE;
arr[2] = BigInteger.ONE;
for (int i = 3; i <= n; i++) {
arr[i] = arr[i - 1].add(arr[i - 2]);
}
System.out.println(arr[n]);
}
你会得到:
2
55
6765
832040
102334155
12586269025
1548008755920
354224848179261915075
只需声明您的数组来存储 BigIntegers:
BigInteger[] arr = new BigInteger[n + 1];
使用 BigInteger.ONE
和 BigInteger.ZERO
初始化您的第一个值:
arr[0] = BigInteger.ZERO;
arr[1] = BigInteger.ONE;
最后直接使用add方法:
arr[i] = arr[i - 1].add(arr[i - 1]);
大家好这里的所有初学者程序员,在没有递归的情况下很难计算斐波那契数列。
我的主要问题是使用 BigInteger
。这是我的代码:
import java.math.BigInteger;
public class Fibonacci
{
public void fibonacci(int n)
{
int[] arr = new int[n + 1];
arr[0] = 0;
arr[1] = 1;
arr[2] = 1;
for(int i = 3; i <= n; i++)
{
arr[i] = arr[i-1] + arr[i-2];
}
System.out.println(arr[n]);
}
}
这是我的 man 方法测试器
public class TestFibonacci
{
public static void main(String[] args)
{
Fibonacci f1 = new Fibonacci();
f1.fibonacci(3);
f1.fibonacci(10);
f1.fibonacci(20);
f1.fibonacci(30);
f1.fibonacci(40);
f1.fibonacci(50);
f1.fibonacci(60);
f1.fibonacci(100);
}
}
在我开始得到负数后,我当前的输出最多可达 40,有什么提示吗??
2
55
6765
832040
102334155
-298632863
1820529360
-980107325
当然你最好使用 BigInteger
,因为没有你会得到 integer overflow
(link) :
public void fibonacci(int n) {
BigInteger[] arr = new BigInteger[n + 1];
arr[0] = BigInteger.ZERO;
arr[1] = BigInteger.ONE;
arr[2] = BigInteger.ONE;
for (int i = 3; i <= n; i++) {
arr[i] = arr[i - 1].add(arr[i - 2]);
}
System.out.println(arr[n]);
}
你会得到:
2
55
6765
832040
102334155
12586269025
1548008755920
354224848179261915075
只需声明您的数组来存储 BigIntegers:
BigInteger[] arr = new BigInteger[n + 1];
使用 BigInteger.ONE
和 BigInteger.ZERO
初始化您的第一个值:
arr[0] = BigInteger.ZERO;
arr[1] = BigInteger.ONE;
最后直接使用add方法:
arr[i] = arr[i - 1].add(arr[i - 1]);