我正在研究一些PHP代码,但我坚持使用逻辑。 我需要从矩形中找出正方形的数量。
我无法在PHP中实现这一点。
请帮忙。
我试过了:
function getcount($length,$breadth,$count=0){
$min=min($length,$breadth);
if($length>$breadth){
$length=$length-$min;
$count++;
return getcount($length,$breadth,$count);
}
else if($breadth>$length){
$breadth=$breadth-$min;
$count++;
return getcount($length,$breadth,$count);
}
else{
$count+=($length/$min);
}
return $count;
}
但有些如何不通过所有用例。 我不知道哪些用例,它失败了?
答案 0 :(得分:7)
我认为计算矩形中正方形数的最简单方法是从中减去找到的正方形,同时它完全消失。
它适用于我:
function getcount($width,$height) {
$total=0;
while($width && $height)
{
if($width>$height)
{
$width-=$height;
}
else if($height>$width)
{
$height-=$width;
}
else
{
$width=0;
$height=0;
}
$total+=1;
}
return $total;
}
echo getcount(5,3)."<br/>";
echo getcount(5,5)."<br/>";
echo getcount(11,5)."<br/>";
输出:
4
1
7
答案 1 :(得分:0)
在我看来,你的代码没有任何问题。 OP中代码的输出与the accepted answer中代码的输出完全相同。您可以运行此(其中getcount()
是OP中的函数,而getcount2()
是来自the Balázs Varga's answer的函数):
for ($i=0; $i<10000; $i++)
{
$a=mt_rand(1,50);
$b=mt_rand(1,50);
$r1 = getcount($a, $b);
$r2 = getcount2($b, $b);
if ($r1 != $r2)
{
echo "D'oh!";
}
}
它根本不会返回任何内容。
唯一的缺陷是,当您运行getcount(0, 0)
时,您的代码会抛出警告消息。
此外,代码($min=min($length,$breadth);
)中的第二行有点多余。你可以这样写:
function getcount($length,$breadth,$count=0){
if($length>$breadth){
$length=$length-$breadth;
$count++;
return getcount($length,$breadth,$count);
}
else if($breadth>$length){
$breadth=$breadth-$length;
$count++;
return getcount($length,$breadth,$count);
}
else if ($breadth!=0){
$count++; // there is no need to divide two same numbers, right?
}
return $count;
}