问题描述:

某人需要爬楼梯,他可以每次走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));
}

递归算法:爬楼梯问题相关推荐

  1. 《LeetCode力扣练习》第70题 爬楼梯 Java

    <LeetCode力扣练习>第70题 爬楼梯 Java 一.资源 题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶 ...

  2. 程序设计爬楼梯问题_楼梯案例:解决楼梯问题的C ++程序

    程序设计爬楼梯问题 A child is running up a staircase with N steps, and can hop 1 step, 2 steps or 3 steps at ...

  3. Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?

    Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...

  4. D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

    DP理论基础 重要知识点: 1.动规和贪心的区别:动规是由前一个状态推导出来的,而贪心是局部直接选最优的 2.动规五部曲: 1)确定dp数组(dp table)以及下标的含义 2)确定递推公式 3)d ...

  5. python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...

    Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...

  6. 力扣一日一练(7)——爬楼梯(斐波那契数列)

    题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...

  7. LeetCode简单题之爬楼梯

    题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶. 1 ...

  8. LeetCode实战:爬楼梯

    题目英文 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either c ...

  9. 【每日一算法】爬楼梯

    微信改版,加星标不迷路! 每日一算法-爬楼梯 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多 ...

最新文章

  1. 防水+四扬声器诺基亚X7细节
  2. 27 网络通信协议 udp tcp
  3. 调焦后焦实现不同距离成像_如何用手机拍出单反的效果,系列学习(一)AF参数“自动调焦”...
  4. 信息学奥赛一本通 1096:数字统计 | 1949:【10NOIP普及组】数字统计 | OpenJudge NOI 1.5 41
  5. Python3爬虫入门之beautifulsoup库的使用
  6. 某大型银行深化系统技术方案之七:核心层之流程控制引擎
  7. SignalTap II里面Power-Up Trigger的使用
  8. anaconda必须安装在c盘吗_Anaconda及tensorflow、pytorch安装记
  9. Yii2中Component和Object的使用方法
  10. mysql hyperloglog_Redis HyperLogLog
  11. java开发sublime插件_开发者最常用的8款Sublime text 3插件
  12. 浅谈端上智能之计算优化
  13. matlab 展开计算公式,钣金下料展开计算公式
  14. 阿里百川 用户反馈(feedback) 与 (com.umeng.lib.xxxxx 及 和 alipaySDK-xxxxx) 冲突的问题。
  15. dspic33 怎么C语言编程,Microchip工程师社区 - dsPIC33汇编指令 - 16位MCU及DSC - 麦田论坛...
  16. 怎么编辑gif动态图片?gif动图编辑的操作步骤
  17. dotnet夜话 第六、七集笔记
  18. Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型
  19. 使用Access时遇到的问题
  20. Egret引擎外部字体的解决方案

热门文章

  1. VS 【】处有未经处理的异常(在【程序名】.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000,0x008D2000)。
  2. 大数据分析工程师面试集锦5--Spark面试指南
  3. [考研经验]北京邮电大学软件学院2018年考研经验
  4. form表单字段默认值
  5. VM虚拟机(VMware)设置外网连接
  6. 当 CPU 摸鱼时,它到底在干什么?
  7. python爬虫某招聘数据进行可视化
  8. python 标准差计算(std)
  9. zigbee入网过程深入解析(Ubiqua抓包)
  10. 在安装虚拟机时,”intel vt-x 处于禁用状态“ 如何解决