计算矩形的平方数

时间:2014-04-23 10:40:43

标签: php

我正在研究一些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;
}

但有些如何不通过所有用例。 我不知道哪些用例,它失败了?

2 个答案:

答案 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;
}