désolé pour cette question spécifique, mais à regarder l'algorithme suivant écrit en Javascriptalgorithme simple de la difficulté à comprendre
function c(a) {
if (a < 2) return 2;
if (a > 4096) return 4096;
var b = a & (a - 1);
while (b > 0) {
a++;
b = a & (a - 1)
}
return a
}
Je suis tombé sur une déclaration que je n'étais pas sûr. Que fait exactement ? J'étais sous l'hypothèse qu'il assignait A à B et soustrait 1 de B, cependant, si c'était le cas, alors B n'atteindrait jamais 0 (ou en dessous de 0) résultant en une boucle infinie? Comment cela peut-il fonctionner?
Je pose cette question parce que j'ai essayé d'adapter l'algorithme à PHP, mais j'ai frappé un mur. Cela fonctionne parfaitement en Javascript, donc je sais avec certitude que je ne comprends pas ce qui se passe. Voici ma tentative en PHP:
function c($a) {
if ($a < 2) return 2;
if ($a > 4096) return 4096;
$b = $a
$b = ($b - 1);
while ($b > 0) {
$a++;
$b = $a;
$b -= 1;
}
return $b;
}
Je vois bien pourquoi il ne fonctionne pas, mais je ne suis pas sûr de savoir comment changer l'algorithme pour le faire fonctionner. Plus ou moins, je sais que je n'adapte pas l'algorithme correctement car je ne comprends pas comment cela fonctionne en Javascript.
De toute façon, s'il vous plaît aidez-moi! Je ne veux pas spécifiquement quelqu'un pour résoudre mon problème pour moi, mais un indice dans la bonne direction serait vraiment génial. . :(
Merci beaucoup
C'est juste, perspicace – DThought
Merci beaucoup. Je comprends tout à fait maintenant. :) – anditpainsme