Adloun

OCaml (option informatique) · Chapitre 10 · Application directe du cours

Exponentiation rapide

Recherche et dichotomie · niveau 1 (application)

Énoncé

Écrire puissance_rapide x n et compter le nombre de multiplications pour n = 8.

Corrigé

let rec puissance_rapide x n =
  if n = 0 then 1
  else
    let p = puissance_rapide x (n / 2) in
    if n mod 2 = 0 then p * p
    else p * p * x

Pour n=8 : appels sur . À chaque retour (sauf le cas ), un ou deux produits : , etc. — soit multiplications : pour n=1, puis une à chacun des trois niveaux suivants, de l'ordre de , contre pour la version naïve.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre