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 этим метод. Пожалуйста, объясните с большим количеством деталей!