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

这个问题明显是由跳台阶进阶而来,我们由于已经做过跳台阶问题,先进行简单分析。

首先可知,第一阶台阶只会有一种跳法;,第二阶可能有两种跳法,分别为两次一步、一次两步两种。

  • 若楼梯阶级 n = 3

    • 跳 1 步到 3:剩下的是第二步没跳,起始跳到第二步只有两种种

    • 跳 2 步到 3:,剩下的是第一步没跳,起始跳到第一步只有一种

    • 跳 3 步到 3:剩下0步没跳,所以只有一种跳法

  • 所以得出结论,若三级台阶,则跳法一共有 1 + 1 + 2 = 4种,可以得出以下结论

    f(3) = f(2) + f(1) + 1;

当然,我们还可以继续分析台阶级数为四,为五的情况,最终可以通过分类讨论,得出以下结论:

  • 若楼梯阶级 n (n >= 3)

    • 跳 1 步到 n:剩下的是第 n - 1 步没跳,起始跳到第 n - 1 步设它为 pre1 种

    • 跳 2 步到 n:剩下的是第 n - 2 步没跳,起始跳到第 n - 2 步设它为 pre2 种

    • 跳 3 步到 n:剩下的是第 n - 3 步没跳,起始跳到第 n - 3 步设它为 pre3 种

    • ....

    • 一直到 跳n-1到n:剩下的是第 1 步没跳,起始跳到第 n - 1 步就只有一种跳法。

  • 最终得出以下结论

    • f(n) = f(n-1) + f(n-2) +...+ f(1) + 1;

    • f(n -1) = f(n-2) +...+ f(1) + 1;

    • 两者相减 则 f(n) - f(n -1) = f(n-1) -> f(n) = 2f(n-1);

  • 得到计算公式,f(n) = 2f(n-1) (n >=2 ),得到公式以后,解决方案就变得很简单了。

所以解决方案也有两者方法,一种递归,一种利用公式进行循环运算。

第一种解决方案,便是采用递归的方式,代码如下

public static int firstJumpFloorN(int target) {if(target < 0){return 0;}if(target == 1){return 1;}return firstJumpFloorN(target - 1 ) * 2;}

第二种便是类似于斐波拉契数列,代码如下

public static int  secondJumpFloorN(int target) {if(target < 0){return 0;}if(target == 1){return 1;}int one = 1;int two = 2;for (int i = 2; i <= target; i++){two = one * 2;one = two;}return two;}

完整代码如下

public class MainJumpFloorN {public static void main(String[] args) {}/*** 递归调用* @param target* @return*/public static int firstJumpFloorN(int target) {if(target < 0){return 0;}if(target == 1){return 1;}return firstJumpFloorN(target - 1 ) * 2;}/*** 累加调用* @param target* @return*/public static int  secondJumpFloorN(int target) {if(target < 0){return 0;}if(target == 1){return 1;}int one = 1;int two = 2;for (int i = 2; i <= target; i++){two = one * 2;one = two;}return two;}}

剑指offer 牛客网原文地址

剑指Offer (九):跳台阶问题进阶版(Java版)相关推荐

  1. 剑指offer:跳台阶 python 实现

    题目 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路 草稿上想了想,这道题跟剑指offer: 斐波那契数列 ...

  2. 剑指Offer #08 跳台阶(递推)

    题目来源:牛客网-剑指Offer专题 题目地址:跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 题目解析 这是 ...

  3. 剑指OFFER之跳台阶(九度OJ1388)

    2019独角兽企业重金招聘Python工程师标准>>> 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多 ...

  4. 剑指offer青蛙跳台阶问题

    (1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. //递归方式  public static int f(int n) { //参数合法性验证 ...

  5. 剑指offer: 变态跳台阶 python实现

    题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路 大概推了一下,当number=1时,res=1:number=2时,re ...

  6. 剑指offer八:跳台阶

    package com.jianzhioffer;public class JumpFloor {public static void main(String[] args){int res = Ju ...

  7. 剑指offer——变态跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 两种方法,第一种比较直观,第二种比较直接. 第一种:f(1)=1;    f(2 ...

  8. python剑指offer跳台阶_【剑指offer】跳台阶I和II(Javapython)

    关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数. f(3) = f(3-1) + f ...

  9. 《剑指offer》跳台阶

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析:第n阶台阶要么由第n-1阶跳来,要么由n-2阶跳来,所有总共有f(n)=f(n-1)+f(n-2 ...

  10. 剑指offer 变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f( ...

最新文章

  1. html给图片做绝对定位,有关绝对定位的全面理解
  2. Linux与JVM的内存关系分析
  3. http 400错误
  4. 海盗云商插件_推销自己的海盗猫王运营商
  5. 面试问题(工作动机、个人愿望 )
  6. C 语言学习:班级同学的博客地址列表
  7. jeesit 部署404
  8. 医院HIS系统厂家统计
  9. 实验二 语法分析1——递归子程序法
  10. cocosCreator关闭多点触摸的问题
  11. 新视智科“5G+工业互联网”产品线南山研发中心揭牌成立,助力制造业转型创新发展
  12. 3090显卡 爆显存调试
  13. 【AI每日播报】马云启动NASA计划 Intel150亿美元收购Mobileye
  14. 想自由查看自己网站每个页面流量情况?这个工具可以满足需求!
  15. 【语义分割】语义分割经典模块
  16. Nginx反向代理https
  17. 详解EJB技术及实现原理
  18. php3d按钮,css3实现3D按钮效果的文章推荐
  19. 怎样使用计算机的桌面助手,360安全卫士如何整理电脑桌面?360桌面助手使用说明...
  20. 中华云盒M1刷Linux教程,最给力的ROOT工具-AMLogic系列盒子刷机教程及ROOT-Amlogic 8726-奇珀网...

热门文章

  1. win10系统打开更新服务器失败怎么回事,如何修复Windows Update组件以解决Win10无法自动更新的问题?...
  2. 解决Field ‘id‘ doesn‘t have a default value 问题
  3. 2022暑期杭电第八场
  4. windows下设置GPU加速tensorflow运算(GT940M)
  5. 数据标签体系与用户画像
  6. OA行业分析:实施政务OA办公系统的好处
  7. 安装MATLAB_R2013b_X64_x32激活及破解方法
  8. 电涡流传感器线性灵敏度
  9. 金融IT的“困”与“道”
  10. bu薪水 华为cloud_【华为】CLOUDBU 华为云数据库工程师招聘 - 软件与微电子学院(SSM)版 - 北大未名BBS...