前言

看到这道题感觉还挺有意思的,自己第一时间并没有想出来,是看了类似博文后才豁然开朗,但是我看到的博文中都没有将下面这个数列的来龙去脉说明清楚,

f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(n) = f(n-1) + f(n-2) f(n)=f(n−1)+f(n−2)
其 中 : ∀ n ∈ ( 2 , + ∞ ) ; f ( 2 ) = 2 ; f ( 1 ) = 1 ; 其中:\quad\forall n\in\mathbb (2,+∞); f(2)=2; f(1)=1; 其中:∀n∈(2,+∞);f(2)=2;f(1)=1;

这个公式是此题的关键,下面我将这其中的含义来详细说明一下。

解析

先想象一个场景,假设你刚刚完成了爬完9个台阶的任务,那么在完成蹬到9层台阶之前,你都有可能在哪?
其实就有两种情况:

1.你已经爬到了第8个台阶,再爬1层就完成任务,就是8+1;
2.你爬到了第7个台阶,再爬2层就完成任务,也就是7+2。
tips:在第二种方法中,不要将7+1+1的方式算做额外的方式,它其实属于方法1,细品下!

所以爬上9个台阶的方法总数就等于爬上8个台阶的方法总数再加上爬上7个台阶的方法总数
以上面的这个例子来引入函数,f(n)表示爬上n层楼梯共有多少种方法,那么f(9)=f(8)+f(7);
同样的:

f(8)=f(7) + f(6);
f(7)=f(6) + f(5);
f(6)=f(5) + f(4);
f(4)=f(3) + f(2);
f(3)=f(2) + f(1);
f(2)=2;//这个应该不用解释吧,就 1+1 和 2 这两种方法
f(1)=1;//就1 这一种方法

到这里,应该整个思路都清晰了吧!
下面就是简单的计算了

f(3) = 3;
f(4) = 5;
f(5) = 8;
f(6) = 13;
f(7) = 21;
f(8) = 34;
f(9) = 55;//答案就是这个!!!

总结

文中的方法只是一种思路,还有博文介绍了排列组合来解这题的。不过排列组合的方式可能在编程实现上会比较难,而文中的方法可能会更容易通过编程来计算n很大时的结果,重要的是思路的理解!
祝:有所收获,变得更强!

详细解答【算法题】9个台阶,每次只能上1个或者2个,一共有多少种走法?相关推荐

  1. n个台阶,每次只能走一步或者两步,求多少种走法

    最重要的就是最后一步:如果走一步就需要f(n-1)种,如果走两步就需要f(n-2)种 走一个台阶:1种-f(1) 走两个台阶:2种-f(2) 三个台阶:先走一个台阶f1和最后一次走两个台阶:f(1)先 ...

  2. 编程题-有n步台阶一次只能上1步或2步共有多少种走法

    问题: 有n步台阶,一次只能上1步或2步,请共有多少种走法,请使用编程实现. 编程题实现: 方法1-递归 //实现f(n):求n步台阶,一共有几种走法public int f(int n){if(n& ...

  3. 算法! 有n步台阶,一次只能上1步或2步,共有多少种走法

    有2种算法, 递归和循环迭代, 依次介绍并比较 1.递归 1步台阶, 一种走法, 即f(1)=1; 2步台阶, 2种走法, 一步加一步或是直接跨两步, 即f(2)=2 3步台阶, 最后一次要么跨1步, ...

  4. 10个台阶,每次只能上1个或者2个,一共有多少种走法

    思路来得太慢,好想拿小锤锤捶自己哟~~~ 第一种,递归思路. 如果你上10个台阶,可以分解成下面两种情况: ● 上9个台阶,最后上1个台阶.假设这种情况下,上前面9个台阶的方法数为m. ● 上8个台阶 ...

  5. 走台阶一共有多少种走法

    可以走1台阶 2台阶 3台阶 long long MoveStairs(int total){if (total < 4) {return total == 3 ? 4 : total;}int ...

  6. 有N个台阶,可以走两步也可以走一步 一共有多少种走法

    递归的思想: 走1步则还剩余n-1个台阶, 走2步则还剩余n-2个台阶. 分别接着去求出n-1和n-2个台阶的走法. public int CountNumber(int n){ if(n<1) ...

  7. 字节算法题--N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。

    N阶台阶,每次走一步或两步,计算共有多少种走法,打印出每种走法. 一 走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步.2步或 ...

  8. N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法?

    算法题:N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法? 平常不怎么研究算法,直到一次面试后,面试官给我了一个算法题,因为平常没有去看过类似的东西,所以就做错了 根据上面的题目 ...

  9. 有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。

    /*  * 有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法.   分析: 动态规划的实现的关键在于能不能准确合理的   用动态规划表来抽象出实际问题.在这个问题上,我们让f(n)表 ...

最新文章

  1. html css常用样式
  2. UE4_Lighting Scenarios
  3. sqli-labs(40)
  4. 【bzoj4712】洪水
  5. 阿里巴巴对Java编程【常量定义】的规约
  6. 智能车学习(八)——菜单的实现
  7. 夜班工作有哪些优缺点?
  8. BTCU 分叉,真的是比特币“千年痛点”克星吗?
  9. python print sep,Python3.x语句print(1,2,3,sep=’:’)的输出结果为()。
  10. 微信语音技术原理_微信语音多群直播原理-一起学堂
  11. 关于人工智能不会使大脑变懒惰的议论文_模拟人类大脑 :人工智能的救赎之路 ?...
  12. 元素周期表Mac动态桌面壁纸
  13. ios相机黑边_iOS照相机去黑框
  14. 电脑锁屏壁纸提取方法
  15. 《Node.js区块链开发》PDF版电子书下载
  16. Python在cmd下pip快速下载安装包的国内安装镜像
  17. 利用modscan、modsim、sscom、vspd进行modbus RTU 模拟测试
  18. 视频教学:7分钟入门线性代数+微积分
  19. 电磁场,麦克斯韦方程的好文章
  20. Joint Extraction of Retinal Vessels and Centerlines Based on Deep Semantics and Multi-Scaled Cross-T

热门文章

  1. 15个资源站收集地址
  2. pat甲级什么水平_保研经历 | 过去几个月我干了些什么
  3. python之open函数
  4. OpenVPN 支持Radius
  5. DOS - Win系统命令提示符中 start 命令的使用方法
  6. 微信小程序实现转发给好友以及朋友圈
  7. 工业机器人之“慧眼”——机器视觉
  8. Axure知识点:如何制作弹出效果的搜索框(以泉州师范学院官网为例)
  9. Springboot毕设项目泉州师范学院运动会平台9gl2gjava+VUE+Mybatis+Maven+Mysql+sprnig)
  10. 计算机控制台win10,win10控制面板在哪里打开