Fibonacci

public class Fibonacci {

    private static final String INDENT = "    ";

    static void printIndent(int depth) {
        for (int i = 0; i < depth; i++) {
            System.out.print(INDENT);
        }
    }

    static int fib(int n, int depth) {
        printIndent(depth);
        System.out.println("Fib(" + n + ")");

        switch (n) {
            case 0 -> {
                printIndent(depth);
                System.out.println("= 0");
                return 0;
            }
            case 1 -> {
                printIndent(depth);
                System.out.println("= 1");
                return 1;
            }
            default -> {
                int a = fib(n - 1, depth + 1);
                int b = fib(n - 2, depth + 1);
                int result = a + b;

                printIndent(depth);
                System.out.println("= " + result);
                return result;
            }
        }
    }

    public static void main(String[] args) {
        int n = 5;
        System.out.println();
        System.out.println("Tracing fib(" + n + "):\n");

        int result = fib(n, 0);
        System.out.println("\nFinal Result: fib(" + n + ") = " + result);
    }
}

 

Scroll to Top