对不起,这样的具体问题,但在观看Javascript编写的很难理解简单的算法
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
}
下面的算法我就翻过,我不知道有关的声明。 实际上做了什么?我假设它将A分配给B,然后从B中减去1,但是,如果是这种情况,那么B不会达到0(或低于0),导致无限循环?这如何工作?
我问这个,因为我试图调整算法到PHP,但已经打了一堵墙。它在Javascript中完美地工作,所以我确定我不知道发生了什么。这是我在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;
}
我可以清楚地看到为什么它不工作,但我不知道如何改变算法,使其工作。或多或少,我知道我没有适当地调整算法,因为我不明白它是如何在Javascript中工作的。
无论哪种方式,请帮助我!我并不特别想让某人为我解决问题,但向正确的方向提示会非常棒。 。:(
非常感谢
这是正确的,有见地的 – DThought 2012-07-11 07:43:58
非常感谢。我现在完全理解。 :) – anditpainsme 2012-07-11 07:58:41