猴子分桃问题

五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。第三只,第四只,第五只猴子都依次如此分食桃子(第五只分完就天亮了,不再分)。那么桃子数最少应该有几个呢?

解:

<?php
function func1($init = 1) {
    $p = $init;
    $flag = true;
    for ($i = 0; $i &lt; 5; $i++) {
        if ($p % 5 == 1) {
            $p = $p - 1 - ($p - 1) / 5;
        } else {
            $flag = false;
        }
    }
    if ($flag) { //如果没有改变过,那说明刚好符合规则分5次
        return $init;
    } else { //改变了就把原参数加1再调用
        return func1($init + 1);
    }
}
var_dump(func1());


发表评论

优秀的人愿不愿意跟我结交,关键在于我自身的价值,而不在于是否讨好他们。