import java.util.*;
public class FabonicRev {
Scanner scan;
int a1, b1, c1, a2, b2, c2, limit, i;
public FabonicRev() {
scan = new Scanner(System.in);
a1 = c1 = 1;
b1 = a2 = b2 = c2 = limit = i = 0;
}
public void input() {
try {
System.out.printf("Enter limit: ");
limit = scan.nextInt();
scan.close();
} catch (InputMismatchException | NumberFormatException e) {
System.err.println("Error Occurred!");
System.exit(0);
}
}
public void compute() {
for (; i < limit; i++) {
a1 = b1;
b1 = c1;
c1 = a1 + b1;
a2 = c1;
c2 = b1;
}
System.out.println("Series in Reverse Order:");
System.out.println(a2 + "\n" + c2);
for (i = limit - 1; i >= 0; i--) {
b2 = a2;
a2 = c2;
c2 = b2 - a2;
System.out.println(c2);
}
}
public static void main(String[] args) {
FabonicRev fr = new FabonicRev();
fr.input();
fr.compute();
}
}
I've excluded first two numbers from the limit.
Output:-
Enter limit: 10
Series in Reverse Order:
89
55
34
21
13
8
5
3
2
1
1
0
Comments
but try the corrected logic. (Commented lines are improved.)
package fibonacci;
import java.util.Scanner;
public class ReverseFibonacci2
{
static Scanner in = new Scanner(System.in);
static int a1 = 1;
static int a2 = 0;
static int b1 = 0;
static int b2 = 0;
static int c1 = 1;
static int c2 = 0;
static int limit;
static int i;
public static void main(String[] args)
{
input();
compute();
}
static void input()
{
System.out.print("Enter limit: ");
limit = in.nextInt();
in.close();
}
static void compute()
{
for (; i < limit; i++)
{
a1 = b1;
b1 = c1;
c1 = a1 + b1;
a2 = c1;
c2 = b1;
}
System.out.println("Reverse fibonacci series is:-");
// System.out.print(a2 + "\t" + c2);
// for (i = limit - 1; i > 0; i--)
for (i = limit - 1; i >= 0; i--)
{
b2 = a2;
a2 = c2;
c2 = b2 - a2;
System.out.print(c2 + "\t");
}
}
}