兔生兔问题和猴子吃桃问题

1.有一对幼年兔,长到三个月之后,从第三个月开始,每个月生一对兔子,生过之后的幼年兔,长到第三个月之后也会每个月生一对兔子,问:两年之后共有多少兔子?

解析:一对幼年兔,三个月后长成成年兔,并且生了一对幼年兔,而且成年兔每个月还会生一对幼年兔,生的幼年兔长到成年后,每个月也会生幼年兔以此类推。

s = {'lv1': 1, 'lv2': 0, 'lv3': 0}
for i in range(23):
    s['lv3'] += s['lv2']
    s['lv2'] = 0
    s['lv2'] += s['lv1']
    s['lv1'] = 0
    s['lv1'] += s['lv3']
print(f"两年之后兔子为{(s['lv1'] + s['lv2'] + s['lv3']) * 2}")

我们可以分为一级兔二级兔三级兔,依次升级,这样问题就好解决多了

三级兔根据二级兔数量增加,二级兔根据一级兔增加,一级兔根据三级兔增加,以此类推

2.猴子吃桃问题

从前有一只猴子,摘了若干桃子,每天吃原来桃子的一半,觉得不过瘾,又多吃了一个,到了最后一天,发现只剩下一个桃子了,问猴子十天前有多少桃子?

def f(n):
    if n == 10:
        return 1
    else:
        return (f(n + 1) + 1) * 2


print(f(1))

这个问题其实就是依次叠加的问题,用递归就行了,猴子每天吃n/2-1个桃子,反过来思考,吃之前的桃子就是(n+1)*2个桃子 。

本人是新手,讲的有问题请帮忙提出。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值