Java-рекурсивная последовательность Фибоначчи

Пожалуйста, объясните этот простой код:

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

Я запутался с последней строкой, особенно потому, что, например, если n = 5, то будут вызваны fibonacci (4) + fibonacci (3) и так далее, но я не понимаю, как этот алгоритм вычисляет значение по индексу 5 этим метод. Пожалуйста, объясните с большим количеством деталей!

Ответы на вопрос(30)

Ваш ответ на вопрос