Sequência de Fibonacci recursiva Java

Por favor, explique este código simples:

public int fibonacci(int n)  {
    if(n == 0)
        return 0;
    else if(n == 1)
      return 1;
   else
      return fibonacci(n - 1) + fibonacci(n - 2);
}

Estou confuso com a última linha, especialmente porque se n = 5, por exemplo, então fibonacci (4) + fibonacci (3) seriam chamados e assim por diante, mas não entendo como esse algoritmo calcula o valor no índice 5 por este método. Por favor, explique com muitos detalhes!

questionAnswers(60)

yourAnswerToTheQuestion