Exponentiation rapide¤
Cet algorithme permet de calculer rapidement des puissances entières (\(a^n\)). La méthode naïve consiste à calculer les puissances avec une boucle :
La complexité de cet algorithme est \(O(n)\). Il est possible de faire mieux en \(O(n log n)\).
long long bin_pow(long long a, long long b) {
if (b == 0) return 1;
long long res = bin_pow(a, b / 2);
return res * res * (b % 2 ? a : 1);
}
Comme évoqué plus haut, un algorithme récursif est souvent moins performant que sa variante itérative. Voici l'implémentation itérative :