gpt4 book ai didi

php - 在 PHP 中获取多个数字的比率的最简单方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 00:52:50 25 4
gpt4 key购买 nike

我根据我在“网络...”上找到的示例改编了这个

function ratio($a, $b) {
$_a = $a;
$_b = $b;

while ($_b != 0) {

$remainder = $_a % $_b;
$_a = $_b;
$_b = $remainder;
}

$gcd = abs($_a);

return ($a / $gcd) . ':' . ($b / $gcd);

}

echo ratio(9, 3); // 3:1

现在我希望它使用 func_get_args() 并返回多个数字的比率。这看起来像是一个递归问题,递归让我很吃惊(尤其是当我的解决方案无限循环时)!

我该如何修改它以获取我想要的尽可能多的参数?

谢谢

最佳答案

第一,试试这个 gcd 函数 http://php.net/manual/en/function.gmp-gcd.php 否则你必须定义一个 gcd 函数,比如

    function gcd($a, $b) {
$_a = abs($a);
$_b = abs($b);

while ($_b != 0) {

$remainder = $_a % $_b;
$_a = $_b;
$_b = $remainder;
}
return $a;
}

然后修改比率函数

    function ratio()
{
$inputs = func_get_args();
$c = func_num_args();
if($c < 1)
return ''; //empty input
if($c == 1)
return $inputs[0]; //only 1 input
$gcd = gcd($input[0], $input[1]); //find gcd of inputs
for($i = 2; $i < $c; $i++)
$gcd = gcd($gcd, $input[$i]);
$var = $input[0] / $gcd; //init output
for($i = 1; $i < $c; $i++)
$var .= ':' . ($input[$i] / $gcd); //calc ratio
return $var;
}

关于php - 在 PHP 中获取多个数字的比率的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com