Adloun

OCaml (option informatique) · Chapitre 4 · Exercice de TD

Fibonacci itératif

Programmation impérative : références et boucles · niveau 2

Énoncé

Écrire fibo n () en avec deux références, et expliquer l'avantage sur la version doublement récursive du chapitre 3.

Corrigé

let fibo n =
  let a = ref 0 and b = ref 1 in
  for _i = 1 to n do
    let s = !a + !b in
    a := !b;
    b := s
  done;
  !a

On fait avancer une « fenêtre » de deux termes consécutifs. fibo 0 , fibo 1 , fibo 6 . Coût : chaque terme est calculé une fois, là où la définition récursive naïve recalcule exponentiellement les mêmes valeurs.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre