user1102123
user1102123

Reputation: 105

What is the error in my fibonacci logic

I am using below method to get fabonacci number series upto 100(based on user input), but the output contains some negative junk number.

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);
        }
    }
}

Can you please help me to find out the issue in above logic.

UPDATE:

I got the fix:

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);
    }
}

Upvotes: 0

Views: 117

Answers (2)

sairam866
sairam866

Reputation: 31

Break the for loop once you reached the number limit.

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;
            }
        }
    }

Upvotes: 1

salman
salman

Reputation: 66

public static void getIterativeFibonacci(int number) {
    if (number == 1) {
        System.out.println(number);
    }
    int fibo1 = 0, fibo2 = 1, fibonacci = 0;
    for (int i = 2; i <= number; i++) {
        System.out.print(fibo1)
        fibonacci = fibo1 + fibo2;
        fibo1 = fibo2;
        fibo2 = fibonacci;
    if (fibonacci <= number) {
        System.out.println("==>"+fibonacci);
    }
}

}

try this one

Upvotes: 0

Related Questions