猴子偷桃问题

还是C语言版的问题,还是一个用递归的问题,很有意思。

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

我的源码如下:

#include <stdio.h>

void Steal(int n, int *p);

main()
{
    int i = 1;    /* indicates the peach number */
    int counter;  /* stores the times of stealing */

    do
    {
        counter = 0;  /* reset the counter when loop starts */
        Steal(i++, &counter);
    } while (counter < 5);  /* end the loop when stealing time reaches 5 */

    printf("%d/n", i-1);
}

void Steal(int n, int *p)
{
    if (n % 5 == 1)
    {
        n -= n/5 + 1;
        ++*p;  /* increase the times of stealing */
        Steal(n, p);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值