Java-递归算法思想
2015-10-04 16:43
537 查看
递归算法设计的基本思想:
对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
关键要抓住的是:
(1)递归出口(结束条件)
(2)地推逐步向出口逼近(递推公式)
例子:
Fibonacci(斐波那契)数列:1,1,2,3,5,8,13……
要求:找出数列中指定index位置的数值
对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
关键要抓住的是:
(1)递归出口(结束条件)
(2)地推逐步向出口逼近(递推公式)
例子:
Fibonacci(斐波那契)数列:1,1,2,3,5,8,13……
要求:找出数列中指定index位置的数值
package XiaoMi; public class test10 { /** * @param args * 递归算法 */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(func(7)); } public static int func(int n){ int result =0; /*if(n==1){ //递归遍历结束条件,即出口 return result =1; }else{ result =func(n-1) * n; //逐步逼近 return result; }*/ if(n==1){ result =1; }else if(n==2){ result =1; }else{ result =func(n-1)+func(n-2); } return result; } }运行结果:
13
相关文章推荐
- Spring S2SH框架整合(一)
- 【SSH】——spring的控制反转和依赖注入
- 字符串的处理
- 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置
- 关于Struts2和ajax
- Struts的ONGL
- ITOO4.0环境搭建Eclipse+Jboss+Maven+SVN
- Java中在一个字符串的固定位置插入字符串
- java集合框架之链表
- hdu acm java
- Java中的static关键字解析
- 66. Plus One | leetcode 66 Java 最短代码实现
- 数组(主要介绍关于数组的一些常用算法)
- Eclipse 从安装到使用(傻子都看懂,你就不用说了,哈哈哈)
- Java在一定范围随机生成日期和经纬度
- Java-二分查找算法
- java 内部类
- Add Binary | leetcode 67 【Java解题报告】
- java SE复习笔记60
- java SE复习笔记59