Adloun

Exponentiation rapide

Exercice · OCaml (option informatique), chapitre 10 — Recherche et dichotomie

É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. — de l'ordre de élévations au carré, contre multiplications pour la version naïve.

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.