Day41:Python基础编程(循环递归)能力训练50天——分桃子

day41

分桃子

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子
凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

分析

老实讲,这个题前前后后也懵了我两天,终于也算弄出来了。最后发现用双循环可能比递归要好用点。废话不多说,上分析。

序号 桃子总数 减1后 猴子拿走 剩下的桃子
1猴 t1 t1-1 (t1-1)/5 t2=4*(t1-1)/5
2猴 t2 t2-1 (t2-1)/5 t3=4*(t2-1)/5
3猴 t3 t3-1 (t3-1)/5 t4=4*(t3-1)/5
4猴 t4 t4-1 (t4-1)/5 t5=4*(t4-1)/5
5猴 t5 t5-1 (t5-1)/5 t末=4*(t5-1)/5

示例

序号 桃子总数 减1后 猴子拿走 剩下的桃子
1猴 3121 3120 624 2496
2猴 2496 2495 499 1966
3猴 1966 1966 399 1596
4猴 1596 1596 319 1276
5猴 1276 1275 255 1020

注意:桃子数总是整数,不可能为分数,但具体第五个猴子拿多少也是不清楚的。所以,我们设第5个猴子拿到的个数从1-10000个开始尝试,其中条件其他猴子按照分桃子的算法得到的桃子也是整数。
设第5个猴子拿到的桃子数为g
第4个猴子拿到到的桃子数:
(5g+1)/4
第3个猴子拿到到的桃子数:
(5
((5g+1)/4)+1)/4
第2个猴子拿到到的桃子数:
(5
((5*((5g+1)/4)+1)/4)+1)/4
第1个猴子拿到到的桃子数:
(5
((5*((5*((5*g+1)/4)+1)/4)+1)/4)+1)/4

编码实现

1.编码实现

flag=True
def fun(n,g):
    global flag
    t=0
    if n<=1:
        t=g

        return t
    else:
        t=(1+5*fun(n-1,g))/4
        if t
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值