手机码字,有点乱
题主你这个代码逻辑是错的。
举个栗子:
假如总共买4瓶水。走一下你的while逻辑
第一轮
total 3 i 1 buy 1
第二轮
total 2 i 2 buy 2
第三轮
total 1 i 0 buy 2 这里出错
第四轮
total 0 i 1 buy 3
买4瓶水看样子结果是正确的。但是由于你的逻辑错了,在第三次买水的时候就不需要掏钱了。你再理解理解。
对了,我是从你的程序员如何提高逻辑思维能力过来的。
改正
function mathBuy($total, $range = 3)
{
$buy = $i = 0;
while ($total > 0) {
$total--;
$i++;
if ($i % ($range+1) == 0) {
$i = 0;
} else {
$buy++;
}
}
return $buy;
}