Calculates the greatest common divisor between two or more numbers.
Use recursion.
Use array_reduce() with the gcd function to appy to all elements in the $numbers list.
Base case is when y equals 0. In this case, return x.
Otherwise, return the gcd of y and the remainder of the division x/y.
代码实现
function gcd(...$numbers)
{
if (count($numbers) > 2) {
return array_reduce($numbers, 'gcd');
}
$r = $numbers[0] % $numbers[1];
return $r === 0 ? abs($numbers[1]) : gcd($numbers[1], $r);
}
使用样例
gcd(8, 36); // 4
gcd(12, 8, 32); // 4