递归算法:爬楼梯问题
问题描述:
某人需要爬楼梯,他可以每次走1级或2级楼梯,输入楼梯的级数,求不同的走法数
例如:楼梯一共有3级,他可以每次都走1级;或者第一次走1级,第二次走2级;也可以第一次走2级,第二次走1级。一共有3种爬楼梯的方法。
输入:
输入包含若干行,每行包含一个正整数N,代表楼梯的级数,1<=N<=30
输出:
不同的走法数,每一行输入对应一行的输出
样例输入:
5
8
10
样例输出:
8
34
89
问题的分析及解决:
这题是一道递归的算法题。题目的核心难点只有一个,如何用递归思想去解决看似是排列组合的问题。
假设有N级台阶,有一个函数int Stairs(int N),可以输出N级台阶的走法。关于这N级台阶的爬楼梯方法,如果第一步走1级,那么剩下的N-1级台阶有Stairs(N-1)种走法;如果第一步走2级,那么剩下的N-2级台阶有Stairs(N-2)种走法。
即有:Stairs(N)=Stairs(N-1)+Stairs(N-2)
有么有很熟悉,斐波那契数列啊~当N=1时,有Stairs(1)=1;N=2,Stairs(2)=2 显然,这2个条件可以作为递归的终止条件,那么这个算法的代码也就轻易可以写出了
代码:
#include <iostream>
using namespace std;
int stairs(int N);void main()
{int N;while (cin >> N){if (N <= 0 || N >= 30)//加个条件控制,不满足条件就退出{cout << "Parameter Overflow";return;}elsecout << stairs(N) << endl;}
}int stairs(int N)
{if (N == 1)return 1;else if (N == 2)return 2;elsereturn (stairs(N - 1) + stairs(N - 2));
}
递归算法:爬楼梯问题相关推荐
- 《LeetCode力扣练习》第70题 爬楼梯 Java
<LeetCode力扣练习>第70题 爬楼梯 Java 一.资源 题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶 ...
- 程序设计爬楼梯问题_楼梯案例:解决楼梯问题的C ++程序
程序设计爬楼梯问题 A child is running up a staircase with N steps, and can hop 1 step, 2 steps or 3 steps at ...
- Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?
Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...
- D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
DP理论基础 重要知识点: 1.动规和贪心的区别:动规是由前一个状态推导出来的,而贪心是局部直接选最优的 2.动规五部曲: 1)确定dp数组(dp table)以及下标的含义 2)确定递推公式 3)d ...
- python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...
Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...
- 力扣一日一练(7)——爬楼梯(斐波那契数列)
题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...
- LeetCode简单题之爬楼梯
题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶. 1 ...
- LeetCode实战:爬楼梯
题目英文 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either c ...
- 【每日一算法】爬楼梯
微信改版,加星标不迷路! 每日一算法-爬楼梯 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多 ...
最新文章
- 防水+四扬声器诺基亚X7细节
- 27 网络通信协议 udp tcp
- 调焦后焦实现不同距离成像_如何用手机拍出单反的效果,系列学习(一)AF参数“自动调焦”...
- 信息学奥赛一本通 1096:数字统计 | 1949:【10NOIP普及组】数字统计 | OpenJudge NOI 1.5 41
- Python3爬虫入门之beautifulsoup库的使用
- 某大型银行深化系统技术方案之七:核心层之流程控制引擎
- SignalTap II里面Power-Up Trigger的使用
- anaconda必须安装在c盘吗_Anaconda及tensorflow、pytorch安装记
- Yii2中Component和Object的使用方法
- mysql hyperloglog_Redis HyperLogLog
- java开发sublime插件_开发者最常用的8款Sublime text 3插件
- 浅谈端上智能之计算优化
- matlab 展开计算公式,钣金下料展开计算公式
- 阿里百川 用户反馈(feedback) 与 (com.umeng.lib.xxxxx 及 和 alipaySDK-xxxxx) 冲突的问题。
- dspic33 怎么C语言编程,Microchip工程师社区 - dsPIC33汇编指令 - 16位MCU及DSC - 麦田论坛...
- 怎么编辑gif动态图片?gif动图编辑的操作步骤
- dotnet夜话 第六、七集笔记
- Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型
- 使用Access时遇到的问题
- Egret引擎外部字体的解决方案
热门文章
- VS 【】处有未经处理的异常(在【程序名】.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000,0x008D2000)。
- 大数据分析工程师面试集锦5--Spark面试指南
- [考研经验]北京邮电大学软件学院2018年考研经验
- form表单字段默认值
- VM虚拟机(VMware)设置外网连接
- 当 CPU 摸鱼时,它到底在干什么?
- python爬虫某招聘数据进行可视化
- python 标准差计算(std)
- zigbee入网过程深入解析(Ubiqua抓包)
- 在安装虚拟机时,”intel vt-x 处于禁用状态“ 如何解决