一、确定初始状态 当井高为 1 米时,青蛙只有一种跳法,即一天直接跳 1 米到达井口,所以 f(1)=1。 当井高为 2 米时,青蛙可以一天跳 2 米直接出来,或者分两天每天跳 1 米,这两种情况构成了跳上 2 米高井的所有方法,所以 f(2)=2。 二、推导递推关系 对于井高 n>2 的情况,考虑青蛙最后一步的跳法。 如果最后一步跳 1 米,那么前面 n - 1 米的跳法数量就是 f(n - 1),因为最后一步确定了,只需要考虑前面 n - 1 米的跳法。 如果最后一步跳 2 米,那么前面 n - 2 米的跳法数量就是 f(n - 2),同理最后一步确定为跳 2 米,只需要考虑前面 n - 2 米的跳法。 所以总的跳法数量 f(n)就是前面两种情况的和,即 f(n)=f(n - 1)+f(n - 2)。 三、计算 f(100) 依次计算 f(3)=f(2)+f(1)=2 + 1 = 3。 f(4)=f(3)+f(2)=3 + 2 = 5。 以此类推,逐步计算下去,直到计算出 f(100),就能得到青蛙跳出 100 米井的方法数。

相关推荐

04-07 10:40
门头沟学院 Java
1. 自我介绍2. 上一段离职的原因3. 为什么会投递测开?对开发的诉求?4. 上一段实习中,接到一个需求,怎么去了解需求、解决需求?怎么投入工作的?5. 你查询一个页面,发现页面是空白的,你会怎么分析,考虑哪方面的原因?6. 如果你需要debug代码,你会怎么做?7. 说说Kafka工作机制8. 对于微信朋友圈的评论功能,需要你设计测试用例,你会怎么设计?9. 你提到打比赛的时候,作为队长身份组队完成了一个项目并获得了奖,你认为你作为一个owner,一个队长来说,在功能上、人员上比较难处理的一个点是什么?10. 如果说因为人员的变动导致你项目方案的变动,如果后续再做类似的项目,你认为可以改进的措施是什么?11. 如果说人员的工作意愿很强,但是因为不可抗力的原因导致人员变动,你会考虑哪些方式去避免或减少你作为owner带项目的风险?12. 在实习的时候,遇到某功能点的开发或其他的事项上,工作没有办法推动,你会怎么处理?13. 上一段实习,汇报的机制是怎么样?如果遇到卡点,你会怎么跟导师沟通?14. 你认为上一段的任务工期是否比较宽泛?15. Java常用的数据结构?(吟唱List、Set、Map)16. 手撕:LeetCode654 最大二叉树反问:1.业务(打车)2.工作内容第一次面测开,前面聊为什么投测开和对开发的诉求估计踩了不少雷,凉
查看16道真题和解析
点赞 评论 收藏
分享
小浪_Coding:干程序员就不能怕被裁 一家公司一般待不会超过三年,就要跳槽的,大龄之后的岗位基本都不好找,目前找一份薪资还OK的工作就不错了.
点赞 评论 收藏
分享
牛客网
牛客企业服务