function quadrant($x,$y) {
if( $x >= 0 && $y >= 0 )
$result = "point ($x,$y) lies in the First quandrant";
else if( $x < 0 && $y >= 0)
$result = "point ($x,$y) lies in the Second quandrant";
else if( $x < 0 && $y < 0)
$result = "point ($x,$y) lies in the Third quandrant";
else if( $x >= 0 && $y < 0)
$result = "point ($x,$y) lies in the Fourth quandrant";
return $result;
}
$x=1;
$y=1;
$q = quadrant($x,$y);
在性能方面,最差的$ x或$ y值是多少?和多少比较?
在性能方面,$ x或$ y的价值是多少?和多少比较?
答案 0 :(得分:0)
这只是一个计算问题。
最佳情况:x和y均为非负数。 2次比较($x >= 0
和$y >= 0
)。
最坏情况:x非负和y负。 6个比较。这是因为如果第一个语句已经&&
,php将停在false
,因为无论第二个语句返回什么结果,结果都不可能是true
。因此,在if
被评估为假之后,第二个和第三个$x<0
已经停止评估
此外,最后if
是完全没必要的,只是在“最坏”的情况下增加了2个比较。删除它并只留下else
会使这种情况下降到4并使“x和y都为负”是最糟糕的情况,进行5次比较。
这是一个更高效的版本:
function quadrant($x,$y) {
if( $x >= 0 ) {
if( $y >= 0)
return "point ($x,$y) lies in the First quandrant";
else
return "point ($x,$y) lies in the Fourth quandrant";
}
else if( $y >= 0)
return "point ($x,$y) lies in the Second quandrant";
else
return "point ($x,$y) lies in the Third quandrant";
}
这总是有2次比较。