Java secuencia recursiva de Fibonacci

Por favor explique este código simple:

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

Estoy confundido con la última línea, especialmente porque si n = 5, por ejemplo, se llamaría fibonacci (4) + fibonacci (3) y así sucesivamente, pero no entiendo cómo este algoritmo calcula el valor en el índice 5 por este método. ¡Por favor explique con muchos detalles!

Respuestas a la pregunta(60)

Su respuesta a la pregunta