[原创]猴子偷桃问题C语言描述

问题描述:

有五只猴子摘了一些桃子,打算隔天早上起来分了吃。 
晚上的时候,第一只猴子偷偷起来把桃子分成五堆,还多了一个,就把多了的那个吃掉,并拿走了一堆。
第二只猴子也偷偷起来将桃子分成了五堆,还是又多了一个,同样吃掉了这一颗桃子,并拿走了其中一堆。第三只、第四只、第五只猴子都做
了同样的事情。请问这堆桃子最少有多少个?
每只猴子每次的动作都一样,因此这个问题是一个典型的递归问题,C语言描述如下:
#include <stdio.h>

/*
 *功  能:根据初始桃子数计算能够完成分配任务的猴子数
 *参  数:num-初始桃子数 monkeyNum-能够完成分配任务的猴子数
 *返回值:能够完成分配任务的猴子数
 */
int Peach(int num, int monkeyNum)
{
     if((num-1)%5 != 0) 
          return monkeyNum;
     num = (num - 1) / 5 * 4;
     return Peach(num, monkeyNum+1);
}

int main()
{
     int peachNum = 1;
     /*如果有5个猴子能完成分配任务,则满足题目要求*/
     while(Peach(peachNum, 0) != 5)
          peachNum++;

     printf("Peach num = %d\n", peachNum);

     return 0;
}

转载于:https://www.cnblogs.com/bigshow/archive/2008/10/27/1320195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值