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
- Racine carrée entière par dichotomie corrigé
- Recherche d'un seuil monotone corrigé
- Exponentiation modulaire rapide corrigé
- Recherche séquentielle corrigé
- Recherche dichotomique corrigé