当前位置: 首页 > news >正文

【剑指Offer】斐波那契数列之青蛙跳台阶

题目

问题一:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

问题二:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析

分析问题一:

将跳法总数记为f(n),可以知道f(1)=1,f(2)=2。当n>2时,第一次跳1级的话,还有f(n-1)种跳法;第一次跳2级的话,还有f(n-2)种跳法,所以可以推得f(n)=f(n-1)+f(n-2),即为斐波那契数列。所以,用斐波那契的解法来解即可。

分析问题二:

解法一:

当n=1时,f(1)=1。

当n大于1时,归纳总结可知:跳上n级台阶,第一次跳1级的话,有f(n-1)种方法;第一次跳2级的话,有f(n-2)种方法……第一次跳n-1级的话,有f(1)种方法;直接跳n级的话,有1种方法,所以可以得到如下公式:

f(n) = f(n-1)+f(n-2)+......f(1)+1 (n≥2)

f(n-1) = f(n-2)+f(n-3)+.....f(1)+1 (n>2)

由上面两式相减可得,f(n)-f(n-1)=f(n-1),即f(n) = 2*f(n-1) (n>2)

最终结合f(1)和f(2),可以推得:f(n)=2^(n-1)

解法二:除了最后一个台阶外,其余的木板都有存在和不存在两种可能性,所以n-1块木板有2^(n-1)种跳法。

代码

package com.Fibonacci; //青蛙跳台阶的2种方式 public class FrogJump { public static int FrogJump1(int n){ if(n < 0){ return 0; } if(n == 1){ return 1; } return FrogJump1(n-1) + FrogJump1(n-2); } public static int FrogJump2(int n){ if(n < 0){ return 0; } if(n == 0){ return 1; } if(n == 1){ return 1; } int prePre = 0; int pre = 1; int result = 1; for(int i = 2; i <= n; i++){ result = prePre + pre; prePre = pre; pre = result; } return result; } public static void main(String[] args){ System.out.println(FrogJump2(3)); System.out.println(FrogJump2(4)); } }
package com.Fibonacci; public class HardFrogJump { //递归 public static int HardFrogJump1(int n){ if(n <= 0){ return 0; } if(n == 1) { return 1; } return 2 * HardFrogJump1(n-1); } //迭代 public static int HardFrogJump2(int n){ if(n <= 0){ return 0; } if(n == 1){ return 1; } int pre = 1; int result = 2; for(int i = 2; i <= n; i++){ result = 2 * pre; pre = result; } return result; } public static void main(String[] args){ System.out.println(); } }
http://www.jsqmd.com/news/1281942/

相关文章:

  • 5分钟掌握OpenUtau:开源虚拟歌手编辑器的完整使用指南
  • 前端转网安真的快吗,JavaScript 技能在渗透测试中到底能省多少力
  • 智能自动化助手:Twitch Drops Miner如何解放你的游戏时间
  • NBM7100A芯片在纽扣电池物联网设备中的能量优化方案
  • GetQzonehistory:3步完成QQ空间数据备份的终极解决方案
  • 从“听得清”到“智会通”:重庆会议系统场景深耕与技术跃迁
  • WordPress独立站搭建成本全解析:从域名到运维的完整预算方案
  • 不手写代码的第 30 天,我才明白前端这个岗位还剩什么
  • [数据结构] 树和二叉树-哈夫曼树和哈夫曼编码
  • Linux核心命令深度解析:从原理到实战的系统管理指南
  • Calculator客户端和服务器示例
  • Flutter 工程构架设计(MVVM + Repository)
  • mysql学习之旅(十三)——Mysql的存储引擎
  • SAM2-UNet论文复现
  • 南昌地热地板哪家强?口碑好的制造厂推荐 - GrowthUME
  • 2026新版三明防水补漏服务商参考|阳台渗漏修缮方案指南 - 筑宅安
  • Ubuntu smba 重启
  • 26年医护考试App多维参考:发展趋势动态追踪 - 虚拟星辰
  • 2026最新AI写小说工具测评:实测10款写小说ai软件,新手如何开始写小说?
  • 如何高效构建智能游戏自动化引擎:M9A图像识别框架深度指南
  • 基于PLC的恒温恒湿控制系统设计与实现
  • 解析请求体内容(如 JSON、表单数据、XML 等) 将原始数据转换为 Python 数据结构 使转换后的数据可在 request. ...
  • 美团LongCat-2.0 MoE模型解析:ASIC训练与OpenRouter实践指南
  • 平芯微HY2120-CB高精度检测+自恢复+0V电池激活充电
  • MongoDB 4.2——在生产环境中设置 MongoDB
  • 2026找深圳市电动升降柱厂家推荐,防撞升降柱厂家哪家好?本地优质源头厂选购指南:5个坑+5条硬标准 - GEO99
  • 微山县油罐厂家哪家好,撬装油罐厂家推荐怎么选不踩坑?2026避坑攻略与靠谱厂家推荐 - GEO99
  • 基于Spring Boot的高校新生报到系统设计与优化实践
  • 2026年3款苹果短视频工具免费额度实测对比,哪款才是实用王者
  • 2026年7月苏州预付卡消费纠纷维权路径与法律分析 - 速递信息