递归是一种非常常用的算法,分为“递”和“归”两个步骤。满足递归算法有三个条件:1.一个问题,可以分解为子问题;2.该问题,与分解后的子问题,解决思路一致;3.存在终止条件。案例演示:假设有n个台阶,每次可以跨1个台阶,或者2个台阶。问:走完这n个台阶共有多少中走法?

  解答思路:根据第一步的走法,可以分为两类

  1.第一步走1个台阶

  2.第一步走2个台阶

  3.则n个台阶的走法,等于第一步先走1个台阶后,n-1个台阶的走法;加上第一步先走2个台阶后,n-2个台阶的走法

  4.用递推公式表示:f(n)=f(n-1)+f(n-2)

  5.终止条件:如果最后剩下1个台阶,则只有1种走法:if(n==1) return1;如果最后剩下2个台阶,则有2中走法:if(n==2) return 2

  代码:

  

/**
* 递归求解:
* 假设有n个台阶,每次可以跨1个台阶,或者2个台阶。请问走完n个台阶共有多少种走法?
*
* 思路:
* 1.根据第一步走法,分为两类:
* 1.1.第一步走1个台阶
* 1.2.第一步走2个台阶
* 1.3.则n个台阶的走法,等于第一步先走1个台阶后,n-1个台阶的走法;加上先走2个台阶后,n-2个台阶的走法
* 1.4.用公式表示:f(n)=f(n-1)+f(n-2)
* 1.5.终止条件:
* 1.5.1.如果最后剩下1个台阶,则只有1中走法:if(n==1) return 1
* 1.5.2.如果最后剩下2个台阶,则有两种走法:if(n==2) return 2
*/
public static int stepsNum(int n){
if(n==1) return 1;
if(n==2) return 2; return stepsNum(n-1)+stepsNum(n-2);
}

最新文章

  1. Windows 下noinstall方式安装 mysql-5.7.5-m15-winx64
  2. shell判断条件整理
  3. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!
  4. android请求root权限
  5. Leetcode 221. Maximal Square
  6. Leetcode: Largest BST Subtree
  7. php程序员的水平 看看自己属于那个级别的
  8. linux下安装memcache(php版本5.3)
  9. React属性和状态对比
  10. BZOJ 1706: [usaco2007 Nov]relays 奶牛接力跑
  11. MYSQL用SOURCE命令时导入乱码的问题解决
  12. PreparedStatement批量处理的一个Framework(原创)
  13. Vim扩展YouCompleteMe插件
  14. JAVA试练塔之试炼技能图
  15. Yii2 在模块modules间跳转时,url自动加模块名
  16. PBRT笔记(2)——BVH
  17. ArcGIS中删除“点”附带的对应“文本信息”
  18. AbstractQueuedSynchronizer源码解析
  19. 简单的纯css重置input单选多选按钮的样式--利用伪类
  20. python基础之闭包函数与装饰器

热门文章

  1. SVN——库合并
  2. 使用脚本删除ios工程中未使用图片
  3. Redis 脚本及其应用
  4. 6. IO复用:select 和 poll
  5. [PHP]PDO调用存储过程
  6. org.hibernate.id.IdentifierGenerationException错误解决方法
  7. 使用Apache Ant合并多个jar
  8. Mac开发必备工具(二)—— iTerm 2
  9. File.Copy的时候Could not find a part of the path
  10. codeforces 437A. The Child and Homework 解题报告