[英]Why am i getting negative numbers in Fibonacci series using java
我已经编写了这段代码,通过输入大小来获取斐波那契数。 我得到的结果是正确的,但我唯一关心的是对于较大范围的尺寸输入,某些值的负号。
1-我无法找到代码中的缺陷,如何摆脱输出中的负值? 2-为什么在某些负值之后仍然有正值。 3-第一个负值是-1323752223,然后是正数。
谢谢。
这是代码:
import java.util.Scanner;
public class FibonacciSeries {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a, c = 0;
int result = 0;
int b = 1;
Scanner scan = new Scanner(System.in);
System.out.println("Enter the Number to display Fibonacci Series");
a = scan.nextInt();
System.out.println("Fibonacci Seriers is as follows");
for (int i = 1; i <= a; i++) {
System.out.print(" "+result+" ");
result = c + b;
b = c;
c = result;
}
}
}
根据输入值, 您可能超过了整数可以容纳的最大值 。
整数限制为2 ^ 31-1或2,147,483,647。 一旦达到该阈值,该数字将环绕并以最小值-2 ^ 31或-2,147,483,648开始。
好了,您可以对System.out.print使用'if'来检查结果是负数还是正数。 之所以得到负值,是因为int仅“是” 32位长。
您可以使用long而不是int,这对于Fib来说会更好一些。 顺序,但不能解决您的实际问题-负数。
这是代码:
for( int i = 1; i <= a; i ++ ) {
if( result >= 0 ) {
System.out.print(" " + result + " ");
}
result = c + b;
b = c;
c = result;
}
尝试将变量的类型从“ int”修改为“ long int”或“ unsigned int”。 也许高价值会修改符号位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.