Java实现台阶问题
1 问题描述
一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。
2 解决方案
2.1 递归法
如果整个台阶只有1级,则显然只有一种跳法。如果台阶有2级,则有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳2级。
推广到一般情况。则可以把n级台阶时的跳法看成是n的函数,记为f(n)。当n > 2时,第一次跳一级还是两级,决定了后面剩下的台阶的跳法数目的不同:如果第一次只跳一级,则后面剩下的n-1级台阶的跳法数目为f(n-1);如果第一次跳两级,则后面剩下的n-2级台阶的跳法数目为f(n-2)。因此,当n > 2时,n级台阶的不同跳法的总数f(n) = f(n-1) + f(n-2)。其中f(1) = 1,f(2) = 2。
追本溯源,上述问题的本质就是斐波那契数问题。
具体代码如下:
package com.liuzhen.array_2;public class JumpStepProblem {//方法1:递归public int getFibonacci(int n){if(n < 0)return -1;if(n <= 2)return n;return getFibonacci(n-1)+getFibonacci(n-2);}public static void main(String[] args){JumpStepProblem test = new JumpStepProblem();System.out.println("使用递归法求解结果:"+test.getFibonacci(10));}
}
运行结果:
使用递归法求解结果:89
2.2 迭代法
由2.1我们可知跳台阶问题的核心,此处是把2.1 中递归法修改成高效率的迭代法。
package com.liuzhen.array_2;public class JumpStepProblem {//解法2:迭代public int getRecursion(int n){if(n < 0)return -1;if(n <= 2)return n;int temp1 = 1;int temp2 = 2;int result = 0;for(int i = 3;i <= n;i++){result = temp1 + temp2;temp1 = temp2;temp2 = result;}return result;}public static void main(String[] args){JumpStepProblem test = new JumpStepProblem();System.out.println("使用迭代法求解结果:"+test.getRecursion(10));}
}
运行结果:
使用迭代法求解结果:89
Java实现台阶问题相关推荐
- 跳台阶算法java,跳台阶(思路和实现)
下面要给大家分享的实例同样是和跳台阶相关的内容,一起来看看具体的题目,以及解题思路和实现方式吧. 题目: 一只青蛙一次能够跳上1级台阶,也能够跳上2级台阶. 求: 这只青蛙跳上一个n级台阶一共的跳法有 ...
- (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
文章目录 题目描述 思路 解法一:递归暴力破解 解法二: 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 解法一 ...
- 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java
<LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...
- JAVA实现变态跳台阶问题(《剑指offer》)
最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...
- 【剑指offer - C++/Java】9、变态跳台阶
题目链接:变态跳台阶 文章目录 1 题目描述 2 题目分析 3 代码 3.1 动态规划算法 3.11 Java代码 3.12 C++代码 3.2 递归算法 3.21 Java代码 3.22 C++代码 ...
- 【剑指offer - C++/Java】8、跳台阶
在线题目链接:跳台阶 文章目录 1.题目描述 2.题目分析 3.代码 3.1 递归方法 3.11 Java代码 3.12 C++代码 3.2 动态规划 3.21 Java代码 3.22 C++代码 3 ...
- 蓝桥杯第五届省赛JAVA真题----n级台阶
有n级台阶.从地面(第0级)出发,首先连续的上台阶,上到不超过第n级的某一个位置后再连续的下台阶,直到回到地面.若每次上下台阶只允许走1级或2级,请问可能的上下台阶的方案数是多少? 特别地,在0级站着 ...
- 青蛙跳石头java_青蛙跳台阶(JAVA)与递归问题探究
青蛙跳台阶JAVA 一只青蛙一次可以跳上一层台阶,也可以跳上两层,求该青蛙跳上n层的台阶总共有多少种跳法(先后次序不同算不同的结果). 思考:可以看出,每次青蛙出脚都会有两种可能,一步或者两步,再次出 ...
- python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...
递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...
最新文章
- 《剑指offer》第十三题(机器人的运动范围)
- java 线程 状态 图_Java线程中的生命周期和状态控制图文详解
- 产品经理和UX设计师,变革已可期
- html字符串转换jsx,javascript – 将React.element转换为JSX字符串
- Docker 方式安装 RabbitMQ (ribbitmq linux 部署)
- I/0口输入输出实验 将P1口的某一位作为输入使用,连接一个按键,当按键按下时使发光二极管亮,否则发光二极管熄灭
- 大数据与BI的区别在于哪里
- html 在线申请,25个在线工作申请免费HTML的简历模板
- 华为Smartkit CRU和FRU工具使用教程
- lamp phpstudy mysql_Phpstudy 搭建服务器教程
- B站笔试真题之[编程题]脸滚键盘
- Mybatis自定义轻量级分页组件(易集成,易拓展)
- C盘清理及可清理文件详解(Windows 7)-简单易操作_让你的C盘彻底解放
- Go语言Win10环境配置
- 用计算机弹歌曲想起你了,抖音每当我想起你在这秋风里是什么歌
- HCIP:rip综合实验
- java中\是什么意思?
- 数据结构真的很难学?
- MacOS虚拟机环境制作交叉编译器步骤
- c语言卸载软件官方下载,CCleaner _CCleaner 下载[2021官方最新版]CCleaner 安全下载_
极速下载...
热门文章
- 【兼容性】ios上设置overflow: scroll不滚动bug
- ESP8266_STA模式
- js求三个数的最大值和最小值
- layui富文本编辑器的使用
- delphi 解析Json格式
- 《代码的第一行——Android》封面诞生
- We found potential security vulnerabilities in your dependencies. Only the owner of this reposito...
- 服务器显示隐藏任务,在Windows 10中隐藏任务栏的简单方法
- 数学の入门到入土 第1天
- 给祖国母亲庆生——软件工程总结