我正在使用下面的方法来使fabonacci数字系列最高达到100(基于用户输入),但是输出包含一些负垃圾数字。
public static void getIterativeFibonacci(int number) {
if (number == 1) {
System.out.println(number);
}
int fibo1 = 1, fibo2 = 1, fibonacci = 1;
for (int i = 2; i <= number; i++) {
fibonacci = fibo1 + fibo2;
fibo1 = fibo2;
fibo2 = fibonacci;
if (fibonacci <= number) {
System.out.println("==>"+fibonacci);
}
}
}
您能帮我找出上述逻辑中的问题吗?
更新:
我已解决:
public static void getIterativeFibonacci(long number) {
if (number == 1) {
System.out.println(number);
}
long fibo1 = 1, fibo2 = 1, fibonacci = 1;
for (int i = 2; i <= number; i++) {
fibonacci = fibo1 + fibo2;
if (fibonacci >= number) {
break;
}
fibo1 = fibo2;
fibo2 = fibonacci;
System.out.println("==>" + fibonacci);
}
}
最佳答案
达到数量限制后,请中断for循环。
public static void getIterativeFibonacci(int number) {
if (number == 1) {
System.out.println(number);
}
int fibo1 = 1, fibo2 = 0, fibonacci = 1;
for (int i = 2; i <= number; i++) {
fibonacci = fibo1 + fibo2;
fibo1 = fibo2;
fibo2 = fibonacci;
if (fibonacci <= number) {
System.out.println("==>"+fibonacci);
}else{
break;
}
}
}