昨晚的牛客笔试题:兔子繁殖

探讨了兔子繁殖问题的数学模型,指出在第n个月的兔子数量等于上个月的数量加上四个月前的数量。虽然递归方法直观,但在大规模计算时效率低下。文章强调使用动态规划来避免重复计算,提高效率,通过保存已计算结果的数组来优化求解过程。
摘要由CSDN通过智能技术生成

题目

一对兔子,在第五个月开始繁殖每个月生成一对小兔子,小兔子出生后也是第五个月开始繁殖,第n个月共有多少对兔子?
输入:n
输出:兔子数量

示例

输入:5
输出:2
解释:第五个月,最开始的兔子开始繁殖出第一对小兔子。

输入:9
输出:7
解释:五月繁殖第一对,六月繁殖第二对,七月繁殖第三队,八月繁殖第四对,九月除了祖先兔子繁殖第五对,另外第五个月出生的小兔子也开始繁殖处一对,加起来总共7对。

第n的月的兔子数,是由前一个月的兔子数外加四个月前的兔子数组成的,四个月前有多少只兔子,那么现在这个月就会出生多少对新兔子。

当月兔子数 = 现有兔子数(也就是上一个月的总数) + 新生兔子数(也就是四个月前的,因为四个月前的兔子都已经成熟了)

于是就有 f(n) = f(n-1) + f(n-4)

那么用递归是不是就美滋滋了?

但是!

这道题用递归只能得出 70%,毕竟很慢。
例如:f(9) = f(8) + f(5) = f(7) + f(4) + f(5) = f(6) + f(3) + f(4) + f(5) = f(5) + f(2) + f(3) + f(4) + f(5)
这样就会重复计算 f(5)了,n越大࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的桐人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值