Mémorisation récursive de Fibonacci

J'ai besoin d'aide avec un programme que j'ai écris pour ma Programmation II classe à universtiy. La question demande que l'on calcule la suite de Fibonacci en utilisant la récursivité. On doit stocker les nombres de Fibonacci calculé dans un tableau à arrêter inutilement répétée des calculs et de réduire le temps de calcul.

J'ai réussi à obtenir le programme de travail sans le tableau et la mémorisation, maintenant je suis en train de mettre en œuvre et je suis coincé. Je ne suis pas sûr de savoir comment le structurer. J'ai Googlé et écrémé à travers quelques livres mais je n'ai pas trouvé grand chose pour m'aider à résoudre la façon de mettre en œuvre une solution.

import javax.swing.JOptionPane;
public class question2
{
static int count = 0;
static int [] dictionary;

public static void main(String[] args)
{

int answer;
int num = Integer.parseInt(javax.swing.JOptionPane.showInputDialog("Enter n:"));

javax.swing.JOptionPane.showMessageDialog(null, 
        "About to calculate fibonacci(" + num + ")");

//giving the array "n" elements
dictionary= new int [num];

if (dictionary.length>=0)
dictionary[0]= 0;

if (dictionary.length>=1)
dictionary[0]= 0;
dictionary[1]= 1;


//method call
answer = fibonacci(num);

//output
JOptionPane.showMessageDialog(null,"Fibonacci("+num+") is "+answer+" (took "+count+" calls)");
}



  static int fibonacci(int n)
  {
count++;

//Only defined for n >= 0
if (n < 0) {
  System.out.println("ERROR: fibonacci sequence not defined for negative numbers.");
  System.exit(1);
}

//Base cases: f(0) is 0, f(1) is 1
//Other cases: f(n) = f(n-1) + f(n-2)/
if (n == 0) 
{
  return dictionary[0];
}

else if (n == 1) 
{
  return dictionary[1];
}

else
return dictionary[n] = fibonacci(n-1) + fibonacci(n-2);



}

}

Le ci-dessus est incorrecte, la fin de mon fib méthode est le principal problème. Je n'ai aucune idée de la façon de l'obtenir pour ajouter les numéros de manière récursive à l'correctement les parties du tableau.

source d'informationauteur Eogcloud