我正在使用下面的方法来使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;
            }
        }
    }

07-24 15:28