I believe that "fact" computes the factorial of $x-1 not of $x. The for statement should be
for ($i=2; $i <= $x; $i++)
not
for ($i=2; $i < $x; $i++)
If you try to compute the factorial of 2 for example, the for loop will not be executed and the result will be 1.
例
例1 GMP を使用した階乗関数
<?php
function fact($x)
{
$return = 1;
for ($i=2; $i < $x; $i++) {
$return = gmp_mul($return, $i);
}
return $return;
}
echo gmp_strval(fact(1000)) . "\n";
?>
この例は、1000 の階乗(非常に大きな数です)を非常に高速に計算します。
rks at rks dot org
13-Dec-2008 06:25
