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.