【发布时间】:2021-06-09 16:21:50
【问题描述】:
一个整数值 N 作为输入传递。程序必须打印斐波那契数列的前 N 项。
import java.util.Scanner;
public class FibonacciExample {
public static void main(String[] args)
{
int maxNumber = 0;
int previousNumber = 0;
int nextNumber = 1;
System.out.println("How many numbers you want in Fibonacci:");
Scanner scanner = new Scanner(System.in);
maxNumber = scanner.nextInt();
System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
for (int i = 1; i <= maxNumber; ++i)
{
System.out.print(previousNumber+" ");
/* On each iteration, we are assigning second number
* to the first number and assigning the sum of last two
* numbers to the second number
*/
int sum = previousNumber + nextNumber;
previousNumber = nextNumber;
nextNumber = sum;
}
}
}
因为这里的代码适用于 30 Numbers 以下。但是在 30 之后它显示了我不需要的负值 例如如果我愿意
5
显示完美解的斐波那契数列数
0 1 1 2 3
但如果我给予
48
它显示
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 **-1323752223**
但我需要这个答案
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 **2971215073**
查看最后一个号码
.我也试过long,但没有导致
.那么我能做些什么来实现那个输出。 提前致谢
【问题讨论】:
-
使用
long(64位)代替int(32位)