博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跳台阶问题
阅读量:7041 次
发布时间:2019-06-28

本文共 1176 字,大约阅读时间需要 3 分钟。

转自:

题目:

给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶;

问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式?

分析:

首先我们考虑最简单的情况。如果只有1个台阶,那么显然只有一种跳法;如果 是2级台阶,那么有2种跳法。对于一个有n级台阶的楼梯来说,我们设跳法为 f(n) ,假如我们先跳1个台阶,则剩下有 n-1 个台阶,跳法为 f(n-1) 次,假如我们先跳2个台阶,则剩下 n-2 阶,跳法为 f(n-2);由此可以推出,对于一个n阶的楼梯,有以下这个跳台阶的公式:

代码如下:

 

[cpp] 
 
  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int JumpStep(int n)  
  5. {  
  6.     if(n <= 0)  
  7.         return -1;  
  8.     if(n == 1)  
  9.         return 1;  
  10.     if(n == 2)  
  11.         return 2;  
  12.     return JumpStep(n-1)+JumpStep(n-2);  
  13. }  
  14. int main()  
  15. {  
  16.     cout<<"5 step jumps : "<<JumpStep(5)<<endl;  
  17.     return 0;  
  18. }  

扩展:

 

当跳台阶的选择多了呢?比如说 每次可以跳3个台阶;按照同样的方法分析,如下公式:

解题代码如下:

 

[cpp] 
 
  1. /** 
  2. 题目描述: 
  3. 有N个台阶,一个人从台阶下向上跳台阶,有两种跳的选择 
  4. 1次跳一个台阶,1次跳两个台阶 这两种选择; 
  5. */  
  6. #include <iostream>  
  7. using namespace std;  
  8.   
  9. int JumpStep(int n)  
  10. {  
  11.     if(n <= 0)  
  12.         return -1;  
  13.     if(n == 1)  
  14.         return 1;  
  15.     if(n == 2)  
  16.         return 2;  
  17.     return JumpStep(n-1)+JumpStep(n-2);  
  18. }  
  19. int JumpStep3(int n)  
  20. {  
  21.     if(n <= 0)  
  22.         return -1;  
  23.     if(n == 1)  
  24.         return 1;  
  25.     if(n == 2)  
  26.         return 2;  
  27.     if(n == 3)  
  28.         return 4;  
  29.     return JumpStep3(n-1)+JumpStep3(n-2)+JumpStep3(n-3);  
  30. }  
  31. int main()  
  32. {  
  33.     cout<<"5 step jumps : "<<JumpStep(5)<<endl;  
  34.     cout<<"5 step jumps : "<<JumpStep3(5)<<endl;  
  35.     return 0;  
本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2012/12/13/2817101.html,如需转载请自行联系原作者
你可能感兴趣的文章
软件测试文档写作——测试方案
查看>>
大数据的商业化:从数据、模型到业务逻辑
查看>>
Junit在MyEclipse上怎么用?
查看>>
能测试知多少--系统计数器与硬件分析
查看>>
颠覆传统 移动CRM成企业应用热点
查看>>
适合应用RFID的六大领域介绍
查看>>
《Web测试囧事》——2.6 时区不一致造成邮件发送异常
查看>>
需求管理是需求开发的基础
查看>>
干货:模板网站SEO优化技巧!
查看>>
CB Insights:2017年Q1网络安全领域共实现140宗投资
查看>>
安捷伦2016 Q2收入较去年增长6% 调升全年收入指导范围
查看>>
最新 Chrome 可让本地文件在网页应用中打开
查看>>
《Python地理空间分析指南(第2版)》——1.10 GIS中矢量数据的基本概念
查看>>
MySQL自动化运维工具 Inception
查看>>
QGraphicsItem如何使用信号/槽
查看>>
《计算机科学导论》一第2章
查看>>
分布式列式数据库 IndexR 开源啦!
查看>>
微软被评为全球第二大影响力公司
查看>>
《Web前端工程师修炼之道(原书第4版)》——我需要学习哪些语言
查看>>
《计算机视觉:模型、学习和推理》——3.5 一元正态分布
查看>>