Adloun

Fibonacci itératif

Exercice · OCaml (option informatique), chapitre 4 — Programmation impérative : références et boucles

É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.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.