斐波那契数列有一个负数
Fibonacci sequence has a negative number
我有斐波那契数列的代码:
public class Fibonacci {
private List<Integer> fibonacci;
public void fillFibonacci(){
fibonacci = new ArrayList<>();
int n1 = 1 , n2 = 1 , n3;
fibonacci.add(n1);
fibonacci.add(n2);
for(int i = 2 ; i < 4000 ; i ++){
n3 = n1 + n2;
fibonacci.add(n3);
n1=n2;
n2=n3;
}
}
public void printFibonacci(){
for(int i = 0 ; i < fibonacci.size() ; i ++){
System.out.print(fibonacci.get(i) + " ");
System.out.println(i);
}
}
}
这段代码显示负数有什么问题吗?
你不能在这个循环中达到索引= 4000,你已经整数溢出。您最多可以转到 49。这样更改循环。
for(int i = 2 ; i < 49 ; i ++){
n3 = n1 + n2;
fibonacci.add(n3);
n1=n2;
n2=n3;
}
第 4000 个斐波那契数列有 836 位。 java int 类型有 32 位,最多可以容纳 10 位数字。之后它会溢出并可能变为负值。如果您想要大数字,请更改您的代码以使用 BigInteger
.
我有斐波那契数列的代码:
public class Fibonacci {
private List<Integer> fibonacci;
public void fillFibonacci(){
fibonacci = new ArrayList<>();
int n1 = 1 , n2 = 1 , n3;
fibonacci.add(n1);
fibonacci.add(n2);
for(int i = 2 ; i < 4000 ; i ++){
n3 = n1 + n2;
fibonacci.add(n3);
n1=n2;
n2=n3;
}
}
public void printFibonacci(){
for(int i = 0 ; i < fibonacci.size() ; i ++){
System.out.print(fibonacci.get(i) + " ");
System.out.println(i);
}
}
}
这段代码显示负数有什么问题吗?
你不能在这个循环中达到索引= 4000,你已经整数溢出。您最多可以转到 49。这样更改循环。
for(int i = 2 ; i < 49 ; i ++){
n3 = n1 + n2;
fibonacci.add(n3);
n1=n2;
n2=n3;
}
第 4000 个斐波那契数列有 836 位。 java int 类型有 32 位,最多可以容纳 10 位数字。之后它会溢出并可能变为负值。如果您想要大数字,请更改您的代码以使用 BigInteger
.