Aprendendo Java - Não entendo completamente como essa sequência é calculada (Fibonacci) [duplicado]

Esta pergunta já tem uma resposta aqui:

Sequência de Fibonacci recursiva em Java 35 respostas

Estou aprendendo Java e tenho esse código da Internet e executando-o no Eclipse:

public class Fibonacci {

    public static void main (String [] args) { 
        for (int counter = 0; counter <= 3; counter++){
            System.out.printf("Fibonacci of %d is: %d\n",  counter, fibonacci(counter));

    }

    public static long fibonacci(long number) {
        if ((number == 0) || (number == 1))
             return number;
        else
             return fibonacci(number - 1) + fibonacci(number - 2);
    }
}

Eu tentei entender, mas não consigo. Então, eu corro o código ecounter é passado através dofibonacci método. Quando o contador começa às0 e é isso que passa primeiro, depois1 e eu entendo o método passa de volta0 e depois1.

Quando atingir 2: vai voltar2-1 + 2-2 = 2 e retorna isso.
Quando atingir 3: vai voltar3-1 + 3-2 = 3 mas não retorna3 retorna2.

Por favor, alguém pode me explicar por que, como não consigo descobrir isso?

obrigado

questionAnswers(1)

yourAnswerToTheQuestion