Suite de Fibonacci

Description du code

Exemple de méoïsation en Pascal

Code source ou contenu du fichier

  1. program fibonacci-memo;
  2.  
  3. cons undef = -1; {valeur qui n'est jamais employee et qui signifie une valeur non definie}
  4. cons maxIndice = 20;
  5.  
  6. var memoArray : packed array[0..maxIndice] of integer;
  7.  
  8. function fibonacci(var n : integer) : integer;
  9. {Pre: 0 <= n <= maxIndice}
  10. begin
  11. if n < 2
  12. then
  13. fibonacci := n;
  14. else
  15. fibonacci := fibonacciMemo(n-1) + fibonacciMemo(n-2);
  16. end;
  17.  
  18. function fibonacciMemo(var n : integer) : integer;
  19. {Pre: 0 <= n <= maxIndice}
  20. begin
  21. if memoArray[n] = undef
  22. then
  23. memoArray[n] := fibonacci(n);{il est necessaire de calculer la valeur}
  24. fibonacciMemo := memoArray[n];{la valeur est deja calculee}
  25. end;
  26.  
  27. {main program}
  28. begin
  29. var i : integer;
  30. var j : integer;
  31. j:=20;
  32. for i:=0 to maxIndice do
  33. memoArray[i]:=undef;
  34. writeln('Fibonacci(', j, ') = ', fibonacci(j));
  35. end.

Autres extraits de codes en Pascal

Document créé le 05/10/2009, dernière modification le 28/10/2018
Source du document imprimé : https://www.gaudry.be/sniplet-rf-pascal/fibonacci-memo.pas.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.