递归解决常见爬楼梯走一步或是两步问题,走多步也是相同的道理!
递归解决爬楼梯问题
上楼梯过程中,一次可以走1阶,也可以走两阶,如果有n阶楼梯,一共可以有多少种走法?
推理:
我们在上楼梯的过程通过一阶或是两阶的走法,不断减少楼梯的步数,也就是n阶台阶我们可以通过n-1或是n-2的方式来减少台阶的阶数,最终归于剩下一阶或是两阶的情况来处理
推理走法过程:
n阶:可以走一步或是走两步,如果走一步就是n-1;如果是走两步就是n-2
n-1阶:可以走一步或是走两步,如果走一步就是(n-1)- 1;如果是走两步就是(n-1)- 2
n-2阶:可以走一步或是走两步,如果走一步就是(n-2)- 1;如果是走两步就是(n-2)- 2
…………
…………
…………
2阶:可以走一步或是走两步,如果走一步就是2-1;如果是走两步就是2-2
1阶:走一步就走完
结论:我们可以通过以上推论得出,通过相同的方式来减少台阶数,增加走法。减少一阶有一种走法,减少两阶有两种走法,通过减少一阶台阶,走法加一,或是减少两阶台阶,走法加二的方式逐渐减少台阶来获得最终走法。
示例代码
public class TestDiGui {//声明递归方法public static long DiGui(long n) {//递归出口if(n == 1 || n ===2) {//如果剩下1阶,有1种走法,返回1,//如果剩下2阶,有2种走法,返回2return n;}else {/**如果有n阶,分为第一步走一阶,或是走两阶的;走1阶是一个分支,走两阶又是另一个分支;不同的走法又进入了不同的DiGui函数中*/return DiGui(n - 1) + DiGui(n - 2);}}public static void main(String[] args) {}
}
以上为个人学习总结,如有不足之处,还望各位多多指教!!!
递归解决常见爬楼梯走一步或是两步问题,走多步也是相同的道理!相关推荐
- 仅靠一种普通的泡沫橡胶,这台机器人解决了“爬楼梯”的难题
机器人算法和控制技术正变得越来越复杂,每一步创新都意味着大量的技术投入. 现在,一家日本公司另辟蹊径,仅靠使用泡沫橡胶,就完成了机器人爬楼梯的技术突破. 5月20-24日,国际机器人与自动化会议在加拿 ...
- Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?
Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...
- python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...
Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...
- 爬楼梯和爬楼梯进阶c++
该题是动态规划入门题,可扩展性较强.主要思想参考代码随想录 文章目录 题目分析 题目描述 题目分析 实践步骤 代码实现 总结: 复杂度 知识考察 题目分析 题目描述 基础爬楼梯,每次以1或2步爬楼梯, ...
- leetcode70 爬楼梯
爬楼梯 分析:对于每一次向上走台阶一共两种可能,一个台阶或者两个台阶,因此则有递归: f(3) = f(1) + f(2) f(4) = f(2) + f(3) - f(n) = f(n-2) + f ...
- C语言(CED)王老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数(递归求解)
(请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419 题目大意:王老师爬楼梯,他可以每次走1级或者2级,输入楼 ...
- 爬楼梯--每次只能走一步或者两步,但是不能连续走两步
问题描述 爬楼梯–每次只能走一步或者两步,但是不能连续走两步 结合上面的图形 如果用户的楼层大于了2的话, 走的方式就分为了两种,第一次走一步或者第一次走两步,当用户走一步的话,下一次的走法就有:走一 ...
- 爬楼梯(递归——奇数步,偶数步扩展)
题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 思路: 采用递归的思想,最后一步可以爬1个或者两个台阶,所以可以得出递归 ...
- 算法一:递归(包含Hanoi问题、N皇后问题、逆波兰表达式、爬楼梯、放苹果、全排列)
递归 递归在算法中具有很重要的地位,也是很多学习编程的初学者非常头疼的问题,看我的这篇文章,希望能为还处于迷雾中的你带来希望 首先我们要知道递归的作用: 1.可替代多重循环 2.解决本来就是用递归形式 ...
最新文章
- CF375D Tree and Queries(dsu on tree)
- c语言数组中的字母可以相等吗,C语言数组比较
- java 网线串口开发_C++标准语言不断被开发,C++却走向了下坡路!
- CentOS7.0下编译安装Nginx 1.10.0
- s3c6410学习笔记-烧写uboot+构建文件系统
- 将Excel文件转换为Html
- .mb是什么文件_神经网络长什么样不知道? 这有一份简单的 pytorch可视化技巧(1)
- .ajax get 写法,原生Ajax写法(GET)
- html加css作品,我的影视作品,如何在博客园发布带有CSS样式的HTML
- PHP递归写入MySQL无限级分类数据
- 线性代数 --- 线性代数中的一些特殊矩阵(被广泛用于高斯消元法的消元矩阵E)(个人笔记扫描版)
- 2022年最新微博批量删除代码_自动化删除新浪微博代码
- vivo oppo 相机权限处理
- HTML渐变背景不重复,在身体上设置的CSS3渐变背景不会拉伸,而是重复?
- IE主页被2345(782782)篡改解决办法
- 2022年武汉市小微企业服务补贴券签约服务机构申报条件、材料及时间
- CSDN博客给我带来的一些诱惑和选择机会
- [小O地图-XOMAP] - 功能简介
- Axure RP 9 授权码
- 【数据库查询--计算机、电脑系列】--查询价格最高的打印机型号。