猴子分桃问题

5个猴子分桃子问题:
有5个猴子分一堆桃子,不可以平分,5个猴子都回去睡觉了.
晚上,第一个猴子深夜偷偷起来,丢掉一个桃子,正好可以5个人分,于是,他拿掉自己的那份回去了。
第二个猴子也起来了,又丢了个桃子,又正好可以5个人分,于是,他也拿着自己的那份走了。
后面的345猴子都是用同样的方法,也都正好。
问:至少有几个桃子。
普通法
public class HouZiFenTao {

 public static void main(String[] args) {
        int count = 0;
        int peaches = 1;//定义桃子的数量
        int temp = 1;
        while(true){
        temp = peaches;//临时存储桃子的数量
            for(count=0; count<5; count++) {
                if((temp-1) % 5 == 0) {
                    temp = (temp - 1)/5 * 4;
                }else{
                    break;//跳出for循环
                }
            }
            if(count == 5){
                break;//跳出while循环
            }
            peaches++;
        }
        System.out.println("至少要有"+peaches+"个桃子");
    }
}


结果显示:
至少要有3121个桃子
递归调用方法
public class HouZiFenTao_DiGuiDiaoYong {
 static int count=0;//全局变量(静态的static)
  public static void main(String[] args) {
   int i;
   for(i=6;i>1;i=i+5) {//保证桃子的个数减去一个后除以5能够整除
    if((i-1)%5==0) {
     count=0;
     //tao(i);
    if (tao(i)!=0&&count==5) {//这一行代码可以删去tao(i)!=0的条件,改为上面注释掉的代码直接调用
      System.out.println("至少要有"+i+"个桃子");
      break;
     }
    }
    }
  }
  public static int tao(int num) {
   int t=num-1;
   if(t%5==0&&count<5) {
    count++;
    return tao(t/5*4);
    }else return num;
    }
}


结果显示:
至少要有3121个桃子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值