我正在尝试编写一个算法来找到GCD(最大公约数),但我的函数结果是Array
我做错了!拜托,我不想要另一个aproche或一个现成的算法复制品,我想知道我做错了什么
<?php
function pgcd($val1, $val2){
if (!is_numeric($val1) || !is_numeric($val2)){
return null;
}
$i = 1;
$final = array();
while($i <= min($val1, $val2)){
if ($i % $val1 === 0 && $i % $val2 === 0){
$final[] = $i;
}
$i++;
}
return $final;
}
echo pgcd(120,420);
?>
首先:你想找到gcd或所有常见的除数?如果是gcd,那么你的代码中有一些错误:
1)用$final = array();
替换$final = null;
,或用return $final;
替换return $final[0];
;
2)用if ($i % $val1 === 0 && $i % $val2 === 0)
取代if ($val1 % $i === 0 && $val2 % $i === 0)
;
3)用$final[] = $i;
取代$final = $i
;
要么:
1)用if ($i % $val1 === 0 && $i % $val2 === 0)
替换if ($val1 % $i === 0 && $val2 % $i === 0)
;
2)用return $final;
取代return max($final);
;
返回$ final是一个数组。对于打印阵列,请使用print_r(YOUR_VALUE)。如果你使用'echo'你只能打印字符串值,而不是数组;