Reputation: 105
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.
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
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
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