Recursão rápida de Fibonacci

Estou tentando lembrar um algoritmo na recursão de Fibonacci. Os seguintes:

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ão o que estou procurando porque é ganancioso. Isso vai crescer exponencialmente (basta olhar paraSequência recursiva de Fibonacci em Java - quanto maior o argumento inicial, mais chamadas inúteis serão feitas.

Provavelmente há algo como um "deslocamento de argumento cíclico", em que chamar o valor de Fibonacci anterior recuperará o valor em vez de calculá-lo novamente.

questionAnswers(9)

yourAnswerToTheQuestion