Je dois écrire une méthode récursive en utilisant Java appelée puissance qui prend un double x et un entier n et qui retourne x^n. Voici ce que j'ai jusqu'à présent.
public static double power(double x, int n) {
if (n == 0)
return 1;
if (n == 1)
return x;
else
return x * (power(x, n-1));
}
Ce code fonctionne comme prévu. Cependant, j'essaie d'aller plus loin et d'effectuer l'exercice facultatif suivant :
"Défi facultatif : vous pouvez rendre cette méthode plus efficace, lorsque n est pair, en utilisant x^n = (x^(n/2))^2."
Je ne sais pas comment mettre en œuvre cette dernière formule lorsque n est pair. Je ne pense pas pouvoir utiliser la récursion pour cela. J'ai essayé d'appliquer la formule suivante, mais elle ne fonctionne pas non plus car je ne peux pas prendre un double à la puissance d'un int.
if (n%2 == 0)
return (x^(n/2))^2;
Quelqu'un peut-il m'indiquer la bonne direction ? J'ai l'impression de passer à côté de quelque chose d'évident. Toute aide est la bienvenue.
10 votes
J'ai voté pour toi parce que tu es un étudiant qui s'est attaqué à un problème par lui-même et qui a montré un bon code. Bien joué. Conseil : réfléchissez à la manière d'incorporer un appel récursif dans votre cas de puissance paire et vous l'aurez.
0 votes
Merci ! J'apprécie beaucoup !
6 votes
La notation de la question vous perturbe. En Java,
^
signifie un XOR au sens du bit. En notation quasi-mathématique,x ^ 2
signifie "x à la deuxième puissance". Oui, vous avez déjà une réponse mais je voulais rendre explicite les notations de combat.